// Материал // В этих и предыдущих ДЗ прогоните кусочки кода из материала лекции через отладчик и внимательно посмотрите что происходит { // сделано } // Confirms // Сохраните в массив ответы на вопросы, заданные с помощью confirm.Используйте литеральный(декларативный) синтаксис массивов([...., ...., ....]) { const arr = [confirm('ты учишься в A-level?'), confirm('Сейчас зима на улице?'), confirm('Ты младше 2 лет?'), confirm('У тебя часто выключают свет?')] console.log(arr) } // Prompts // Сохраните в массив ответы на вопросы, заданные с помощью prompts.Используйте доступ к массиву по индексу и присвоение(arr[....] = ....) { const arr = [] arr[arr.length] = prompt('ты учишься в A-level?') arr[arr.length] = prompt('Сейчас зима на улице?') arr[arr.length] = prompt('Ты младше 2 лет?') arr[arr.length] = prompt('У тебя часто выключают свет?') console.log(arr) } // Item access // Попросите пользователя ввести(prompt) индекс в массиве.Выведите значение элемента по этому индексу.Попробуйте так же ввести индекс "length". { const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'A', 'B', 'C', 'D', 'E', 'F'] alert(arr[prompt('Введите в поле ниже цифру от 0 до 15, или "length"', 'length')]) } // Item change // Попросите пользователя ввести(prompt) индекс в массиве, а так же значение для этого индекса.Присвойте в введенный индекс введенное значение { const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'A', 'B', 'C', 'D', 'E', 'F'] arr[prompt('Введите в поле ниже цифру от 0 до 15')] = prompt('Введите любое значение для этого индекса') console.log(arr) } // Multiply table // Создайте таблицу умножения 5x5 используя декларативный синтаксис вложенных массивов const arr = [[....], [....], [....], .....].Числа во вложенных массивах должны быть равны произведению индекса внешнего массива на индекс внутреннего массива: arr[2][3] === 6 { const arr = [[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]] console.log(arr[4][2]) } // Multiply table slice // Используя slice создайте массив массивов(другую таблицу / матрицу) из таблицы умножения, в которой не будет нулей { const arr = [[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 arr2 = [arr[1].slice(1), arr[2].slice(1), arr[3].slice(1), arr[4].slice(1)] console.log(arr2) } // IndexOf Word // Спросите у пользователя строку из нескольких слов.Спросите у него искомое слово.Выведите, каким по счету является это слово в строке из нескольких слов.Если слово не найдено, выведите сообщение об этом(а не - 1) { const string = prompt('Введите в поле ниже любую строку, состоящую из нескольких слов', 'Или оставьте по умолчанию эту строку чтобы не париться').toLowerCase() const searchingWord = prompt('Какое слово будем искать?').toLowerCase() string.split(' ').indexOf(searchingWord) !== -1 ? alert(`Слово ${string.split(' ').indexOf(searchingWord) + 1}-ое по счету в строке`) : alert('Простите, такого слова нет в строке') } // Reverse // Добавьте в массив пять введенных пользователем через prompt элементов(используйте push).Создайте другой массив с этими же элементами в обратном порядке.Для этого извлекайте элементы из первого массива используя pop, добавляйте их во второй используя push { const arr = [] arr.push(prompt('Введите в поле ниже строку или цифру'), prompt('Введите в поле ниже строку или цифру'), prompt('Введите в поле ниже строку или цифру'), prompt('Введите в поле ниже строку или цифру'), prompt('Введите в поле ниже строку или цифру')) const arr2 = [] arr2.push(arr.pop(), arr.pop(), arr.pop(), arr.pop(), arr.pop()) console.log(arr2) } // Reverse 2 // Переверните второй массив из предыдущего задания еще раз(последовательность будет как в первом массиве), используя shift и unshift { const arr = [] arr.push(prompt('Введите в поле ниже строку или цифру'), prompt('Введите в поле ниже строку или цифру'), prompt('Введите в поле ниже строку или цифру'), prompt('Введите в поле ниже строку или цифру'), prompt('Введите в поле ниже строку или цифру')) const arr2 = [] arr2.push(arr.pop(), arr.pop(), arr.pop(), arr.pop(), arr.pop()) const arr3 = [] arr3.unshift(arr2.shift()) arr3.unshift(arr2.shift()) arr3.unshift(arr2.shift()) arr3.unshift(arr2.shift()) arr3.unshift(arr2.shift()) console.log(arr3) } // Copy // Скопируйте массив созданный в задании Multiply table неглубоко { const arr = [[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]] arrCopy = arr.slice() console.log(arr === arrCopy) console.log(arr[0] === arrCopy[0]) } // альтернативный вариант { const arr = [[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]] arrCopy = [...arr] console.log(arr === arrCopy) console.log(arr[0] === arrCopy[0]) } // Deep Copy // Скопируйте массив созданный в задании Multiply table включая вложенные массивы(глубокая копия) { const arr = [[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 [a, b, c, d, e] = arr const arrCopy = [a.slice(), b.slice(), c.slice(), d.slice(), e.slice(),] console.log(arr === arrCopy) console.log(arr[0] === arrCopy[0]) } // Array Equals // Создайте код, в котором будет две переменных с массивами(arr и arr2), которые равны друг другу(arr1 === arr2) { const arr1 = [1, 2, 3, 4, 5] const arr2 = arr1 console.log(arr1 === arr2) } // Flat // Соберите все элементы всех вложенных массивов из задания Multiply table в один массив.Его длина должна быть равна 25. Используйте spread - оператор { const arr = [[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 arrSum = [...arr[0], ...arr[1], ...arr[2], ...arr[3], ...arr[4],] console.log(arrSum.length) } // Destruct // Извлеките первую, пятую и девятую букву из строки, введенной пользователем, используя деструктуризацию.Выведите их { const string = prompt('Введите, пожалуйста, в строке ниже какую-то фразу', 'Или оставьте эту фразу по умолчанию').toUpperCase() const [a, , b, , , , , , c] = string.split('') alert(`Первая буква: ${a}; третья буква: ${b}; девятая буква: ${c}.`) } // Destruct default // Извлеките вторую, четвертую и пятую букву из строки, введенной пользователем, используя деструктуризацию.Если в строке таких букв не окажется задайте переменным значение по умолчанию!(восклицательный знак).Выведите эти переменные { const string = prompt('Введите, пожалуйста, в строке ниже какую-то фразу', 'Или оставьте эту фразу по умолчанию').toUpperCase() const [, a = '!', , b = '!', c = '!'] = string.split('') alert(`Вторая буква: ${a}; четвертая буква: ${b}; пятая буква: ${c}.`) } // Multiply table rest // Реализуйте задание Multiply table slice, используя оператор rest при деструктуризации.Используйте вложенную деструктуризацию.После получения четырех обрезанных вложенных массивов - соберите общий массив без нулей { const arr = [[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]] let [a, [b, ...restFisrtArr], [c, ...restSecondArr], [d, ...restThirdArr], [e, ...restFourthArr]] = arr const arrResult = [restFisrtArr, restSecondArr, restThirdArr, restFourthArr] console.log(arrResult) } // For Alert // Есть массив["John", "Paul", "George", "Ringo"].Выведите каждое имя отдельным alert(), используя цикл for ....of { const arr = ["John", "Paul", "George", "Ringo"] for (let name of arr) { alert(name) } } // For Select Option // Используя заготовку выше, создайте выпадающий список с валютами.Элементы выпадающего списка создаются с помощью тэга < option > { const currencies = ["USD", "EUR", "GBP", "UAH"] let str = "" document.write(str) } // For Table Horizontal // Аналогично, добейтесь вывода имен в ячейки таблицы по горизонтали(одна строка с четырьмя ячейками) { const names = ["John", "Paul", "George", "Ringo"] let str = "" str += "" for (let name of names) { str += `` } str += "" str += "
${name}
" document.write(str) } // For Table Vertical // Аналогично, добейтесь вывода имен в ячейки таблицы по вертикали(одна колонка с четырьмя строками, в каждой строке - одна ячейка) { const names = ["John", "Paul", "George", "Ringo"] let str = "" for (let name of names) { str += `` } str += "
${name}
" document.write(str) } // For Table Letters // Используя заготовку выше, создайте таблицу 3x4.В каждой строке по три ячейки с буквами, четыре строки, так как 4 валюты в массиве. { const currencies = ["USD", "EUR", "GBP", "UAH"] let str = "" for (let currency of currencies) { str += `` console.log(currency) for (let letter of currency) { str += `` console.log(letter) } str += `` } str += "
${letter}
" document.write(str) } // For Multiply Table // Выведите таблицу умножения 5x5 из задания Multiply table в таблицу, используя вложенные for .... of и document.write. // Сделайте черезстрочную подсветку - задавайте четным строкам один цвет фона, нечетным - другой { const arr = [[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]] let i = 0 let str = `` for (let string of arr) { str += (i % 2) ? `` : `` i++ for (let number of string) { str += `` } str += `` } str += `
${number}
` document.write(str) } // Function Capitalize // Реализуйте задачу String: capitalize как отдельную функцию: { const capitalize = str => { let result = `${str[0].toUpperCase()}${str.slice(1).toLowerCase()}` return result //именно этот код обеспечит возврат результата функции } alert(capitalize(prompt('ВВедиТЕ ниже Любую ФраЗУ С РазныМ', 'ВВедиТЕ ниже Любую ФраЗУ С РазныМ'))) } // Map Capitalize // Пусть пользователь вводит строку.Разбейте её по пробелам.Используя map и capitalize создайте массив в котором каждое слово будет с большой буквы.Соберите массив в строку обратно { const string = prompt('Введите в поле ниже фразу, которую вы считаете подходящей!', 'иЛИ оСТАВЬТЕ эту фразу по умолчанию').split(' ') const capsName = string.map(string => `${string[0].toUpperCase()}${string.slice(1).toLowerCase()}`) alert(capsName.join(' ')) } // Filter Lexics // Пусть пользователь вводит строку.Разбейте её по пробелам. Используя filter верните true если элемент массива не состоит в определенном массиве недопустимых слов.Если же элемент массива - недопустимое слово, функция, переданная в filter должна возвращать false.Соберите массив в строку обратно { const string = prompt('Введите в поле ниже любую фразу с нецензурной лексикой', 'Или оставьте эту фразу с некрасивый и грубый словами').split(' ') const badWords = ['некрасивый', 'грубый'] const result = string.filter(x => x !== badWords[0] && x !== badWords[1]) alert(result.join(' ')) } // Beep Lexics // Пусть пользователь вводит строку.Разбейте её по пробелам.Используя map и тернарный оператор верните из функции слово без изменений, если оно не состоит в каком - то другом массиве запрещенных слов.Если же слово состоит в этом списке, функция должна вернуть слово BEEP.Соберите массив обратно в строку через пробел.Таким образом вы сможете реализовать замену нескольких запрещенных слов на BEEP. { const string = prompt('Введите в поле ниже любую фразу с нецензурной лексикой', 'Или оставьте эту фразу с некрасивый и грубый словами').split(' ') const badWords = ['некрасивый', 'грубый'] const result = string.map(x => x !== badWords[0] && x !== badWords[1] ? x : 'BEEP') alert(result.join(' ')) } // Реализуйте задачу For Select Option используя reduce: { const currencies = ["USD", "EUR", "GBP", "UAH"] let str = "" document.write(str) } // НЕ РЕШЕНО // Пусть пользователь вводит строку с любыми парными скобками в ней, например[[]() { { { []() } } }]. Найдите место возможной ошибки(непарности) в этой строке.Для этого, каждую открывающую скобку добавляйте в стек. При нахождении закрывающей она должна соответствовать вершине стека.Если она не соответстует, выведите сообщение об ошибке и позицию в строке.Если соответствует - уберите скобку из стека.Если строка ошибок не содержит, порадуйте пользователя. // Например, строки с проблемой: [(}], [(()()()], {()()[()()}]{ { { } } } { }