123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307 |
- // 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)
- // }
- //Обратите внимание, что при изменении ФИО должны поменяться поля имя, отчество и фамилия
|