123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415 |
- // Материал
- // Как обычно, запустите все примерчики из материала занятия, разберитесь что там и как работает, возьмите отладчик / консоль и поиграйтесь с ними.походу возможно найдутся ошибки, сообщите мне о них пожалуйста
- {
- // сделано
- }
- // Temperature
- // Оформите Temperature как функцию, в которую параметром передается температура в одной системе, а возвращается в другой.Никаких prompt и console.log в коде быть не должно, если вы хотите в дальнейшем пользоваться этой функцией где угодно в коде удобно.Нужен ли блок кода в функции для решения этой задачи ?
- {
- const functionTemperature = (temperature, unit) => {
- let k
- unit.toLowerCase() === 'цельсий' ? k = 0 : unit.toLowerCase() === 'фаренгейт' ? k = 1 : alert('Вы ввели неправильну единицу измерения. Перепроверьте написание!')
- const temperatureConvertKelvin = `Указанная Вами температура соответствует: ${(1.8 * +temperature * (k + 1) + 32).toFixed(2)} в градусах Фаренгейта`
- const temperatureConvertCelsiy = `Указанная Вами температура соответствует: ${((+temperature - 32) / 1.8 * k).toFixed(2)} в градусах Цельсия`
- unit.toLowerCase() === 'цельсий' ? alert(temperatureConvertKelvin) : unit.toLowerCase() === 'фаренгейт' ? alert(temperatureConvertCelsiy) : alert('Один или несколько параметров введены неправильно')
- }
- functionTemperature(prompt('Укажите любое значение температуры (цифрами)'), prompt('Введите единицу измерения: Цельсий/Фаренгейт'))
- }
- // RGB
- // Оформите Number: RGB как функцию, в которую параметрами передаются три числа(r, g, b) => . Функция должна возвращать строку в нотации #RRGGBB.Используя условия или тернарный оператор добейтесь что бы в результате всегда было 7 символов, даже когда значение цвета меньше 15ти.Нужен ли блок кода этой функции ?
- {
- const colorConverter = ([red, green, blue]) => alert('Указанный Вами цвет для CSS: #' +
- ((+red) > 255 ? alert('Слишком большая цифра') : ((+red) < 16 ? + '0' + (+red).toString(16).toUpperCase() : (+red).toString(16).toUpperCase())) +
- ((+green) > 255 ? alert('Слишком большая цифра') : ((+green) < 16 ? + '0' + (+green).toString(16).toUpperCase() : (+green).toString(16).toUpperCase())) +
- ((+blue) > 255 ? alert('Слишком большая цифра') : ((+blue) < 16 ? + '0' + (+blue).toString(16).toUpperCase() : (+blue).toString(16).toUpperCase())))
- colorConverter(['Введите целое число 0 ... 255 для красного цвета', 'Введите целое число 0 ... 255 для зеленого цвета', 'Введите целое число 0 ... 255 для синего цвета'].map(prompt))
- }
- // Flats
- // Оформите Number: flats как функцию.Продумайте достаточное количество параметров для решения задачи.Функция должна возвращать объект вида { entrance, floor }, где entrance - номер падика, floor - номер этажа на котором находится квартира.
- {
- const numberFlats = ([numberOfFloors, numberOfFlats, searchingFlat]) => {
- const numberFlats = {}
- const searchingEntrance = Math.ceil(searchingFlat / ((+numberOfFloors) * +numberOfFlats))
- const searchingFloor = Math.ceil((+searchingFlat) / (+numberOfFlats) - (+numberOfFloors) * (searchingEntrance - 1))
- numberFlats.entrance = searchingEntrance
- numberFlats.floor = searchingFloor
- return numberFlats
- }
- numberFlats(['Введите количество этажей в доме:', 'Введите количество квартир на этаже:', 'Введите номер квартиры, которую нунжно найти:'].map(prompt))
- }
- // Credentials
- // Оформите задание String: credentials как функцию без параметров.Используйте функцию capitalize из домашнего задания по массивам.Функция должна содержать вызовы prompt и возвращать объект вида { name, surname, fatherName, fullName }
- {
- const enterPersonData = () => {
- const arr = {}
- const name = (prompt('Ввеедиет Ваше Имя в поле ниже')).trim()
- arr.name = `${name[0].toUpperCase()}${name.slice(1).toLowerCase()}`
- const surname = (prompt('Ввеедиет Вашу Фамилию в поле ниже')).trim()
- arr.surname = `${surname[0].toUpperCase()}${surname.slice(1).toLowerCase()}`
- const fatherName = (prompt('Ввеедиет Ваше Отчество в поле ниже')).trim()
- arr.fatherName = `${fatherName[0].toUpperCase()}${fatherName.slice(1).toLowerCase()}`
- const fullName = `${name[0].toUpperCase()}${name.slice(1).toLowerCase()} ${surname[0].toUpperCase()}${surname.slice(1).toLowerCase()} ${fatherName[0].toUpperCase()}${fatherName.slice(1).toLowerCase()}`
- arr.fullName = fullName
- return arr
- }
- enterPersonData()
- }
- // New line
- // Оформите задание String: new line как функцию с параметром - строкой.Функция должна возвращать строку с настоящими переносами.
- {
- const string = (str) => str.split('\\n').join('\n')
- alert(string(prompt('Введите в поле ниже любую строку. Для перехода на новую строку используйте комбинацию: \n')))
- }
- // Prompt OR
- // Оформите задание Prompt: OR как функцию, которая принимает строку для prompt и значение по умолчанию.Функция должна возвращать введенный текст или значение по умолчанию в случае отказа пользователя вводить что - либо.Используйте функцию без блока кода(функцию в одно выражение)
- {
- // const defaultValue =
- const age = (insertData, defaultValue) => insertData !== null && insertData !== '' ? `Вы родились в ${2022 - +insertData} году` : defaultValue
- alert(age(prompt('Укажите в поле, сколько вам полных лет (цифрами):'), 'Вы не ввели ваш возраст!'))
- }
- // Login And Password
- // Оформите задание Login And Password как функцию, которая принимает два параметра - правильный логин и пароль и возвращает true если логин и пароль введенные пользователями верны, или false если пользователь не смог.
- {
- const autorization = (login, pass) => login === 'admin' && pass === 'qwerty'
- autorization(prompt('Введите в поле ниже логин'), prompt('Введите пароль в поле нижне'))
- }
- // For Table
- // Оформите задание For Multiply Table как функцию, которая принимает любой массив с массивами, а возвращает строку HTML с тэгом < table > и всякими tr и td.
- {
- newArr = [[0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [0, 2, 4, 6, 8], [0, 3, 6, 9, 12], [0, 4, 8, 12, 16]]
- const table = (arr) => {
- let i = 0
- let str = `<table>`
- for (let string of arr) {
- str += (i % 2) ? `<tr style = "background-color:orange">` : `<tr style = "background-color:red">`
- i++
- for (let number of string) {
- str += `<td>${number}</td>`
- }
- str += `</tr>`
- }
- str += `</table>`
- return str
- }
- table(newArr)
- }
- // Filter Lexics
- // Оформите задание Filter Lexics как функцию, принимающую любую строку для проверки и массив некорректных слов(['бляха', 'муха', "пляха", "шабля"], например).Функция должна возвращать строку без этих некорректных слов.
- {
- const string = 'Скоро бляха зима, ни одна муха на улицу не вылетит. Пляха - это шото, а шабля - это мощное оружие'
- const badWords = ['бляха', 'муха', "пляха", "шабля"]
- const checkString = (str, badArr) => {
- const result = str.toLowerCase().split(' ').filter(x => !badArr.includes(x) ? x : '')
- return result.join(' ')
- }
- checkString(string, badWords)
- }
- // Currency Table
- // Оформите задание Currency Table как функцию, без параметров, которая складывает полученные данные во внутренний двумерный массив, после чего отображает его используя функцию из задания For Table
- {
- const arrTable = () => {
- fetch('https://open.er-api.com/v6/latest/USD').then(res => res.json())
- .then(data => {
- const arrRow = []
- for (let [key, value] of Object.entries(data.rates)) {
- const arrData = []
- arrData.push(key)
- for (let num of Object.values(data.rates)) {
- arrData.push(+((num / value).toFixed(4)))
- }
- arrRow.push(arrData)
- }
- const table = (arr) => {
- let i = 0
- const currencies = []
- for (const currency in data.rates) {
- currencies.push(currency)
- }
- // table header
- let str = `<table style="text-align: center;">`
- str += `<tr><td></td>`
- for (const currency of currencies) {
- str += `<td style="padding: 3px 10px;">${currency}</td>`
- }
- str += `</tr>`
- // table body
- for (let string of arr) {
- str += !(i % 2) ? `<tr style = "background-color: #d1d1d1">` : `<tr>`
- i++
- for (let number of string) {
- str += `<td style="padding: 0 10px;">${number}</td>`
- }
- str += `</tr>`
- }
- str += `</table>`
- return str
- }
- document.write(table(arrRow))
- })
- }
- arrTable()
- }
- // Form
- // Оформите задание Form как функцию, которая принимает любой объект как параметр и создает форму на экране.
- {
- const enterForm = (insertObject) => {
- let str = `<form>`
- for (let [key, value] of Object.entries(insertObject)) {
- str += `<label>${key}: <input type="${typeof value === 'string' ? 'text' : typeof value === 'number' ? 'number' : 'checkbox'}" value="${value}" /></label></br></br>`
- }
- str += `</form>`
- return document.write(str)
- }
- // Объект для теста
- const car = {
- "Name": "chevrolet chevelle malibu",
- "Cylinders": 8,
- "Displacement": 307,
- "Horsepower": 130,
- "Weight_in_lbs": 3504,
- "Origin": "USA",
- "in_production": false
- }
- enterForm(car)
- }
- // Array of objects sort
- // Сделайте обобщенную функцию сортировки массива с объектами
- // Функция позволяет отсортировать любой набор данных по имени поля(второй параметр).Третьим параметром идет необязательный Boolean, который в случае true делает сортировку по возрастанию, в случае false - по убыванию.По умолчанию(без третьего параметра) происходит сортировка по возрастанию.
- {
- const persons = [
- { name: "Иван", age: 17 },
- { name: "Мария", age: 35 },
- { name: "Алексей", age: 73 },
- { name: "Яков", age: 12 },
- { name: "Семен", age: 24 },
- { name: "Антон", age: 2 },
- { name: "Петр", age: 102 },
- { name: "Николай", age: 44 }
- ]
- const sort = (sortArr, sortKey, sortOrder) => {
- const sortFunction = (a, b) => {
- if (sortOrder !== false) {
- return a[sortKey] > b[sortKey] ? 1 : -1;
- } else {
- return a[sortKey] > b[sortKey] ? -1 : 1;
- }
- }
- const newSortArr = sortArr.slice().sort(sortFunction)
- return newSortArr
- }
- console.log(`Сортировка по возрасту (по возрастанию):`, sort(persons, "age"))
- console.log(`Сортировка по имени (по убыванию):`, sort(persons, "name", false))
- }
- // Table
- // Оформите задание Table как функцию, которая принимает следующие параметры: //done
- // a. любой массив объектов для отображения //done
- // b. поле, по которому сортировать //done
- // c. порядок сортировки(убывание / возрастание) //done
- // Перед отображением:
- // a. скопируйте исходный массив, что бы сортировка не изменила оригинал;
- // b. отсортируйте с помощью функции из предыдущего задания
- // c. Отображение возьмите из задания Table
- {
- const persons = [
- {
- name: 'Мария',
- fatherName: 'Ивановна',
- surname: 'Иванова',
- sex: 'female',
- // married: true,
- // age: 27
- },
- {
- name: 'Николай',
- fatherName: 'Иванович',
- surname: 'Иванов',
- age: 15,
- // sex: 'male',
- // married: false,
- },
- {
- name: 'Петр',
- fatherName: 'Иванович',
- surname: 'Иванов',
- married: true,
- // sex: 'male',
- // age: 31
- }
- ]
- const sort = (sortArr, sortKey, sortOrder) => {
- // copy origin arr
- let newSortArr = sortArr.slice()
- // sorting arr
- const sortFunction = (a, b) => {
- if (sortOrder !== false) {
- return a[sortKey] > b[sortKey] ? 1 : -1;
- } else {
- return a[sortKey] > b[sortKey] ? -1 : 1;
- }
- }
- newSortArr.sort(sortFunction)
- // create arr with items of header
- const keys = []
- for (const child of newSortArr) {
- for (const key in child) {
- if (!keys.includes(key)) {
- keys.push(key);
- }
- }
- }
- // create table header
- let str = `<table style="border-collapse: collapse; text-align: center;"><tr style="background-color: grey;">`
- for (let key of keys) {
- str += `<td style="border: 1px solid black; padding: 5px 10px">${key}</td>`
- }
- str += `</tr>`
- // create table body
- for (const child of newSortArr) {
- str += `<tr>`
- for (const num of keys) {
- str += `<td style="border: 1px solid black; padding: 5px 10px">${(Object.keys(child)).includes(num) ? child[num] : ''}</td>`
- }
- str += `</tr>`
- }
- str += `</table>`
- // output table data
- document.write(str)
- return newSortArr
- }
- sort(persons, "name", false)
- console.log(`Исходный массив`, persons)
- }
- // Divide
- // Реализуйте задание Number: divide в HTML:
- {
- // реализовано в HTML файле HW07.html
- }
- // Calc Func
- // Вспомните первое ДЗ по Javascript, в котором вы делали всякие расчеты используя код на Javascript.Оформите это как функцию:
- // найдите все входящие данные, сделайте из них параметры
- // найдите переменную с результатом расчетов и сделайте так, что бы ваша функция возвращала этот результат.
- // Если результатов несколько, создайте объект из этих результатов и верните его.
- {
- const params = [
- {
- period: "day",
- lightUse: 100,
- rate: 144,
- },
- {
- period: "night",
- lightUse: 100,
- rate: 144,
- },
- {
- daysInMonth: 30
- }
- ]
- const dataElectrisity = (arr) => {
- const result = {}
- result.priceDay = (arr[0].lightUse * arr[0].rate * (arr[0].period === 'day' ? 1 : 0.5)) / 100
- result.priceNigth = (arr[1].lightUse * arr[1].rate * (arr[1].period === 'day' ? 1 : 0.5)) / 100
- result.priceMonth = result.priceDay + result.priceNigth
- result.usePerDay = +((arr[0].lightUse + arr[1].lightUse) / arr[2].daysInMonth).toFixed(2)
- return result
- }
- dataElectrisity(params)
- }
- // Calc Live
- // Используя пример из задания Divide и функцию из Calc Func сделайте несколько полей ввода в HTML, меняя которые вы будете получать результат калькуляции в каком - то div.
- {
- // реализовано в HTML файле HW07.html
- }
|