// 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 // { // function createPerson (name, surname) { // return obj = { // name, // surname, // getFullName // } // } // console.log(createPerson()) // // function getFullName () { // return `${this.name} ${this.surname} ${this.fatherName}` // } // console.log(obj.getFullName()) // const a = createPerson("Вася", "Пупкин"); // const b = createPerson("Анна", "Иванова") // const c = createPerson("Елизавета", "Петрова") // a.fatherName = 'Иванович' // console.log(a.getFullName()) // console.log(b.getFullName()) // } // 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 fatherName = "Oleksandrovna"; // let age = 160; // // function getName () { // return name // } // function getSurname () { // return surname // } // function getFatherName () { // return fatherName // } // function getAge () { // return age; // } // function getFullName () { // return name + ` ` + surname + ` ` + fatherName + ` ` + age // } // //let fullName = getFullName() // //console.log(fullName) // console.log(name) // console.log(age) // // getName(); getSurname(); getFatherName(); getAge(); getFullName() // // function setName (newName) { // newName = "Tanya" // if ((typeof name != "string") || (name[0] !== name[0].toUpperCase())) { // name = newName // } // } // function setSurname (newSurname) { // if ((typeof surname != "string") || (surname[0] !== surname[0].toUpperCase()) ) { // surname = newSurname // } // } // function setFatherName (newFatherName) { // if ((typeof fatherName != "string") || (fatherName[0] !== fatherName[0].toUpperCase())) { // fatherName = newFatherName // } // } // function setAge (newAge) { // newAge = 66; // if (age <= 0 || age > 100) { // age = newAge // } // } // function setFullName (newFullName) {} // // setName() // setAge() // setSurname() // setFatherName() // setFullName() // // console.log(name) // console.log(age) // } // // createPersonClosure("Nataliia", "Ostapenko" ); // // } // 4. createPersonClosureDestruct // Сделайте набор параметров функции из предыдущего задания объектом, используйте деструктуризацию для извлечения параметров. // Задайте значения по умолчанию // const a = createPersonClosureDestruct(createPerson("Вася Пупкин")) // const b = createPersonClosureDestruct({name: 'Николай', age: 75}) // // let person = { // name: "Nataliia", // surname: "Ostapenko", // fatherName: "Aleksandrovna", // age: 31 // } // // function createPersonClosureDestruct (person) { // let {name, fatherName, surname, age} = person; // return `${name} ${fatherName} ${surname} ${age}` // } // // const a = createPersonClosureDestruct(person) // console.log(a); // // function createPersonClosure (person) { // // return `${name} ${fatherName} ${surname} ${age}` // } function getFullName({name="Анон", surname="Анонов", fatherName='Анонович'}={}){ return `${name} ${fatherName} ${surname}` } console.log(getFullName()) // 5. isSorted + // Напишите функцию isSorted, которая принимает набор параметров любого размера, и возвращает true, когда все параметры // - это числа, и каждое из них больше предыдущего параметра. // { // let arr = [1, 3, 8]; // // function isSorted (arr) { // arr.shift() // for (let i in arr) { // if (arr[i] > arr[i-1]) {} // else { // alert("falce") // } // } // } // isSorted(arr) // } //6. Test isSorted // Используя циклический ввод в массив (задание array fill), обеспечьте ввод данных для isSorted // function createArr () { // const arr = []; // let item; // while (item = +prompt("Введите любые значения")) { // arr.push(item); // } // // for (let i in arr) { // if (arr[i] > arr[i-1]) {} // else { // alert("falce") // } // } // console.log(arr) // } // createArr() // 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("Петрова Анна Николаевна") // // function personForm(parent, person){ // //насоздавать инпутов (5 штук) // //надобавлять их в parent // //навесить каждому из них обработчик события типа nameInput.oninput = () => { // //тут пытаемся менять person используя person.setName. Текст в инпуте должен стать таким, который вернет setName // //} // } // // Обратите внимание, что при изменении ФИО должны поменяться поля имя, отчество и фамилия