// Материал
// В этих и предыдущих ДЗ прогоните кусочки кода из материала лекции через отладчик и внимательно посмотрите что происходит
{
// сделано
}
// 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 += `
${name}
`
}
str += "
"
str += "
"
document.write(str)
}
// For Table Vertical
// Аналогично, добейтесь вывода имен в ячейки таблицы по вертикали(одна колонка с четырьмя строками, в каждой строке - одна ячейка)
{
const names = ["John", "Paul", "George", "Ringo"]
let str = "
"
for (let name of names) {
str += `
${name}
`
}
str += "
"
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 += `
${letter}
`
console.log(letter)
}
str += `
`
}
str += "
"
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 += `
${number}
`
}
str += `
`
}
str += `
`
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)
}
// НЕ РЕШЕНО
// Пусть пользователь вводит строку с любыми парными скобками в ней, например[[]() { { { []() } } }]. Найдите место возможной ошибки(непарности) в этой строке.Для этого, каждую открывающую скобку добавляйте в стек. При нахождении закрывающей она должна соответствовать вершине стека.Если она не соответстует, выведите сообщение об ошибке и позицию в строке.Если соответствует - уберите скобку из стека.Если строка ошибок не содержит, порадуйте пользователя.
// Например, строки с проблемой: [(}], [(()()()], {()()[()()}]{ { { } } }
{
}