// 1. Arrow to Functions + // Переведите любые пять заданий из предыдущего ДЗ по функциям в синтаксис function /* { function temp (a) { return a * 1.8 + 32; } } { function rgbToHex (r,g,b) { const hex = '#' + (r > 15 ? r.toString(16) : "0" + r.toString(16)) + (g > 15 ? g.toString(16) : "0" + g.toString(16)) + (b > 15 ? b.toString(16) : "0" + b.toString(16)); return hex } console.log(rgbToHex(3,5,16)) } { function result (porch, area, floor, flat) { const total = porch * floor * area; // Общее количество квартир в доме const totalPorch = total / porch; // Количество квартир в одном подьезде const numPorch = Math.floor(1 + (flat - 1) / totalPorch) ; const numFloor = Math.floor(1 + ((flat - 1) % totalPorch) / area);// Номер подьезда console.log(flatResult); return flatResult = { numPorch, numFloor } } } { function string (str = prompt('введите несколько строк разделенных \n')) { return str.split('\\n').join('\n'); } } { function sign (userName = 'admin', pass ='qwerty' ) { if (userName === 'admin') { if (pass === 'qwerty') { alert('Успешный вход'); } else if (pass === '' || pass == null) { alert('Пароль не введен'); } else { alert('Неправильный пароль'); } } else if (userName === '' || userName == null) { alert('Логин не введен'); } else { alert("Неправильный логин"); } } } */ //2. createPerson + // Создайте функцию createPerson, которая принимает два параметра: name и surname, и возвращает объект с ключами name, // surname, getFullName. getFullName должна быть функцией, которая работает с объектом через this, а так же готова к // тому, что в объекте в последствии добавить ключ fatherName // { // const a = createPerson("Вася", "Пупкин"); // a.fatherName = 'Иванович' // console.log(a.getFullName()) // // const b = createPerson("Анна", "Иванова") // console.log(b.getFullName()) // // const c = createPerson("Елизавета", "Петрова") // console.log(c.getFullName()) // // function createPerson(name, surname) { // return { // name, // surname, // getFullName() { // return `${this.name} ${this.fatherName || ""} ${this.surname}` // } // } // } // // } // 3. createPersonClosure + // Задание в целом, аналогично предыдущему, однако, в объект заносить name, surname, fatherName и age не нужно. name и // surname должны быть параметрами, переменные age и fatherName объявите через let в теле createPersonClosure. // Внутри createPersonClosure объявите следующие функции: getName, getSurname, getFatherName, getAge, getFullName // // Эти функции должны возвращать переменные, объявленные в функции createPersonClosure // Следующие функции: setName, setSurname, setFatherName, setAge, setFullName, должны принимать один параметр (newName, // newSurname и т.п.), проверять его на корректность и менять значение переменных, объявленных внутри createPersonClosure. // Проверки на корректность: // // имя, фамилия, отчество должно быть строкой с большой буквы // возраст должен быть числом от 0 до 100. // // Если проверка на корректность не пройдена, функция не должна менять соответстующую переменную. // Функция setFullName должна разбивать строку по пробелам и заносить части строки в surname, name и fatherName // Все функции set должны возвращать то значение, которое по итогу попало во внутренюю переменную. То есть если новое // значение некорректно, то функция возвращает старое значение // В объекте-результате createPersonClosure должны быть только эти 10 функций (геттеров и сеттеров). В коде функций this // не используется // // const a = createPersonClosure("Вася", "Пупкин") // const b = createPersonClosure("Анна", "Иванова") // console.log(a.getName()) // a.setAge(15) // a.setAge(150) //не работает // // b.setFullName("Петрова Анна Николаевна") // console.log(b.getFatherName()) //Николаевна // // { // function createPersonClosure(name, surname) { // let age; // let fatherName; // return obj = { // getName() { // return name // }, // getSurname() { // return surname // }, // getFatherName() { // return fatherName // }, // getAge() { // return age // }, // getFullName() { // return `${name} ${surname} ${fatherName} ${age}` // }, // // setName (newName) { // if (newName[0] === newName[0].toUpperCase()) { // name = newName; // } // return name // }, // setSurname (newSurname) { // if (newSurname[0] === newSurname[0].toUpperCase()) { // surname = newSurname; // } // return surname // }, // setFatherName (newFatherName) { // if (newFatherName[0] === newFatherName[0].toUpperCase()) { // fatherName = newFatherName; // } // return fatherName // }, // setAge(newAge) { // if(newAge>=0 && newAge<=100) { // age = newAge; // } // return age}, // // setFullName (newFullName) { // let arr = newFullName.split("") // if (arr[0][0] === arr[0][0].toUpperCase() && arr[1][0] === arr[1][0].toUpperCase() && arr[2][0] === arr[2][0].toUpperCase()) { // surname = arr[0] // name = arr[1] // fatherName = arr[2] // } // return this.getFullName() // } // } // } // // // const a = createPersonClosure("Вася", "Пупкин") // a.setAge(20); // a.setFatherName("Иванович") // console.log(a.getFullName()) // // const b = createPersonClosure("Анна", "Иванова") // b.setFullName("Петрова Анна Николаевна") // b.setAge(106) // console.log(b.getFullName()) // } // 4. createPersonClosureDestruct +- // Сделайте набор параметров функции из предыдущего задания объектом, используйте деструктуризацию для извлечения параметров. // Задайте значения по умолчанию // // { // function createPersonClosureDestruct ({name = "Антон", // surname = "Анонов", // fatherName = "Анонович", // age = "25"} = {}){ // const obj = { // name, // surname, // fatherName, // age // } // return obj // } // // function createPerson (name, surname) { // return { // name, // surname, // getFullName() { // return `${this.name} ${this.fatherName} ${this.surname}` // } // } // } // const a = createPerson("Вася Пупкин") // console.log(a) // } // 5. isSorted + // Напишите функцию isSorted, которая принимает набор параметров любого размера, и возвращает true, когда все параметры // - это числа, и каждое из них больше предыдущего параметра. // { // let arr = [1, 4, 7, 9] // // function isSorted(arr) { // if (typeof arr[0] !== "number") { // return console.log("false") // } // let previousValue = arr[0]; // // for (let i = 1; i < arr.length; i++) { // if (typeof arr[i] !== "number" || previousValue > arr[i]) { // return console.log("false"); // } // previousValue = arr[i] // } // return console.log("true") // } // console.log(isSorted(arr)) // } //6. Test isSorted + // Используя циклический ввод в массив (задание array fill), обеспечьте ввод данных для isSorted // { // function isSorted(arr) { // console.log(arr) // if (typeof arr[0] !== "number") return false // let previousItem = arr[0] // for (let i = 1; i < arr.length; i++) { // if (typeof arr[i] !== "number" || previousItem > arr[i]) return false; // previousItem = arr[i] // } // return true // } // // function testIsSorted() { // const arr = [] // let i // while (i = +prompt('Введите любое число')) { // arr.push(i) // } // alert('Получен массив' + arr) // return arr // } // // console.log(isSorted(testIsSorted())) // } // 7. personForm // Напишите функцию, которая принимает два параметра: родительский DOM-элемент и объект-результат работы // createPersonClosure (или createPersonClosureDestruct, результаты у обоих этих функций одинаковые) и рисует форму, // которая позволяет редактировать данные о персоне. В начале работы personForm создает 5 полей ввода (имя, фамилия, // отчество, возраст, ФИО) в родительском DOM-элементе и устанавливает туда значения, прочитанные с помощью getName, // getSurname и т.д. По событию oninput в любом из полей ввода нужно запускать соответствующий set..... Например при // изменении поля ввода имени должен запускаться setName(какой-то инпут.value). Функции set... возвращают значение, и его нужно занести // обратно в input. Таким образом в полях ввода невозможно будет ввести некорректные значения (например возраст не // сможет выйти за пределы 0-100 лет) // // const b = createPersonClosure("Анна", "Иванова") // b.setAge(15) // b.setFullName("Петрова Анна Николаевна") // { // let person = { // name: "Антон", // surname: "Анонов", // fatherName: "Анонович", // age: "25" // } // console.log(person) // // function personForm (person) { // for (const [key, value] of Object.entries(person)) { // let pole = document.createElement('input'); // pole.innerText = value // document.body.appendChild(pole); // console.log(person) // } // // //насоздавать инпутов (5 штук) // //надобавлять их в parent // //навесить каждому из них обработчик события типа nameInput.oninput = () => { // //тут пытаемся менять person используя person.setName. Текст в инпуте должен стать таким, который вернет setName // } // personForm(person) // } //Обратите внимание, что при изменении ФИО должны поменяться поля имя, отчество и фамилия