HW05.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351
  1. // Материал
  2. // В этих и предыдущих ДЗ прогоните кусочки кода из материала лекции через отладчик и внимательно посмотрите что происходит
  3. {
  4. // сделано
  5. }
  6. // Confirms
  7. // Сохраните в массив ответы на вопросы, заданные с помощью confirm.Используйте литеральный(декларативный) синтаксис массивов([...., ...., ....])
  8. {
  9. const arr = [confirm('ты учишься в A-level?'), confirm('Сейчас зима на улице?'), confirm('Ты младше 2 лет?'), confirm('У тебя часто выключают свет?')]
  10. console.log(arr)
  11. }
  12. // Prompts
  13. // Сохраните в массив ответы на вопросы, заданные с помощью prompts.Используйте доступ к массиву по индексу и присвоение(arr[....] = ....)
  14. {
  15. const arr = []
  16. arr[arr.length] = prompt('ты учишься в A-level?')
  17. arr[arr.length] = prompt('Сейчас зима на улице?')
  18. arr[arr.length] = prompt('Ты младше 2 лет?')
  19. arr[arr.length] = prompt('У тебя часто выключают свет?')
  20. console.log(arr)
  21. }
  22. // Item access
  23. // Попросите пользователя ввести(prompt) индекс в массиве.Выведите значение элемента по этому индексу.Попробуйте так же ввести индекс "length".
  24. {
  25. const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'A', 'B', 'C', 'D', 'E', 'F']
  26. alert(arr[prompt('Введите в поле ниже цифру от 0 до 15, или "length"', 'length')])
  27. }
  28. // Item change
  29. // Попросите пользователя ввести(prompt) индекс в массиве, а так же значение для этого индекса.Присвойте в введенный индекс введенное значение
  30. {
  31. const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'A', 'B', 'C', 'D', 'E', 'F']
  32. arr[prompt('Введите в поле ниже цифру от 0 до 15')] = prompt('Введите любое значение для этого индекса')
  33. console.log(arr)
  34. }
  35. // Multiply table
  36. // Создайте таблицу умножения 5x5 используя декларативный синтаксис вложенных массивов const arr = [[....], [....], [....], .....].Числа во вложенных массивах должны быть равны произведению индекса внешнего массива на индекс внутреннего массива: arr[2][3] === 6
  37. {
  38. 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]]
  39. console.log(arr[4][2])
  40. }
  41. // Multiply table slice
  42. // Используя slice создайте массив массивов(другую таблицу / матрицу) из таблицы умножения, в которой не будет нулей
  43. {
  44. 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]]
  45. const arr2 = [arr[1].slice(1), arr[2].slice(1), arr[3].slice(1), arr[4].slice(1)]
  46. console.log(arr2)
  47. }
  48. // IndexOf Word
  49. // Спросите у пользователя строку из нескольких слов.Спросите у него искомое слово.Выведите, каким по счету является это слово в строке из нескольких слов.Если слово не найдено, выведите сообщение об этом(а не - 1)
  50. {
  51. const string = prompt('Введите в поле ниже любую строку, состоящую из нескольких слов', 'Или оставьте по умолчанию эту строку чтобы не париться').toLowerCase()
  52. const searchingWord = prompt('Какое слово будем искать?').toLowerCase()
  53. string.split(' ').indexOf(searchingWord) !== -1 ? alert(`Слово ${string.split(' ').indexOf(searchingWord) + 1}-ое по счету в строке`) : alert('Простите, такого слова нет в строке')
  54. }
  55. // Reverse
  56. // Добавьте в массив пять введенных пользователем через prompt элементов(используйте push).Создайте другой массив с этими же элементами в обратном порядке.Для этого извлекайте элементы из первого массива используя pop, добавляйте их во второй используя push
  57. {
  58. const arr = []
  59. arr.push(prompt('Введите в поле ниже строку или цифру'), prompt('Введите в поле ниже строку или цифру'), prompt('Введите в поле ниже строку или цифру'), prompt('Введите в поле ниже строку или цифру'), prompt('Введите в поле ниже строку или цифру'))
  60. const arr2 = []
  61. arr2.push(arr.pop(), arr.pop(), arr.pop(), arr.pop(), arr.pop())
  62. console.log(arr2)
  63. }
  64. // Reverse 2
  65. // Переверните второй массив из предыдущего задания еще раз(последовательность будет как в первом массиве), используя shift и unshift
  66. {
  67. const arr = []
  68. arr.push(prompt('Введите в поле ниже строку или цифру'), prompt('Введите в поле ниже строку или цифру'), prompt('Введите в поле ниже строку или цифру'), prompt('Введите в поле ниже строку или цифру'), prompt('Введите в поле ниже строку или цифру'))
  69. const arr2 = []
  70. arr2.push(arr.pop(), arr.pop(), arr.pop(), arr.pop(), arr.pop())
  71. const arr3 = []
  72. arr3.unshift(arr2.shift())
  73. arr3.unshift(arr2.shift())
  74. arr3.unshift(arr2.shift())
  75. arr3.unshift(arr2.shift())
  76. arr3.unshift(arr2.shift())
  77. console.log(arr3)
  78. }
  79. // Copy
  80. // Скопируйте массив созданный в задании Multiply table неглубоко
  81. {
  82. 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]]
  83. arrCopy = arr.slice()
  84. console.log(arr === arrCopy)
  85. console.log(arr[0] === arrCopy[0])
  86. }
  87. // альтернативный вариант
  88. {
  89. 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]]
  90. arrCopy = [...arr]
  91. console.log(arr === arrCopy)
  92. console.log(arr[0] === arrCopy[0])
  93. }
  94. // Deep Copy
  95. // Скопируйте массив созданный в задании Multiply table включая вложенные массивы(глубокая копия)
  96. {
  97. 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]]
  98. const [a, b, c, d, e] = arr
  99. const arrCopy = [a.slice(), b.slice(), c.slice(), d.slice(), e.slice(),]
  100. console.log(arr === arrCopy)
  101. console.log(arr[0] === arrCopy[0])
  102. }
  103. // Array Equals
  104. // Создайте код, в котором будет две переменных с массивами(arr и arr2), которые равны друг другу(arr1 === arr2)
  105. {
  106. const arr1 = [1, 2, 3, 4, 5]
  107. const arr2 = arr1
  108. console.log(arr1 === arr2)
  109. }
  110. // Flat
  111. // Соберите все элементы всех вложенных массивов из задания Multiply table в один массив.Его длина должна быть равна 25. Используйте spread - оператор
  112. {
  113. 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]]
  114. const arrSum = [...arr[0], ...arr[1], ...arr[2], ...arr[3], ...arr[4],]
  115. console.log(arrSum.length)
  116. }
  117. // Destruct
  118. // Извлеките первую, пятую и девятую букву из строки, введенной пользователем, используя деструктуризацию.Выведите их
  119. {
  120. const string = prompt('Введите, пожалуйста, в строке ниже какую-то фразу', 'Или оставьте эту фразу по умолчанию').toUpperCase()
  121. const [a, , b, , , , , , c] = string.split('')
  122. alert(`Первая буква: ${a};
  123. третья буква: ${b};
  124. девятая буква: ${c}.`)
  125. }
  126. // Destruct default
  127. // Извлеките вторую, четвертую и пятую букву из строки, введенной пользователем, используя деструктуризацию.Если в строке таких букв не окажется задайте переменным значение по умолчанию!(восклицательный знак).Выведите эти переменные
  128. {
  129. const string = prompt('Введите, пожалуйста, в строке ниже какую-то фразу', 'Или оставьте эту фразу по умолчанию').toUpperCase()
  130. const [, a = '!', , b = '!', c = '!'] = string.split('')
  131. alert(`Вторая буква: ${a};
  132. четвертая буква: ${b};
  133. пятая буква: ${c}.`)
  134. }
  135. // Multiply table rest
  136. // Реализуйте задание Multiply table slice, используя оператор rest при деструктуризации.Используйте вложенную деструктуризацию.После получения четырех обрезанных вложенных массивов - соберите общий массив без нулей
  137. {
  138. 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]]
  139. let [a, [b, ...restFisrtArr], [c, ...restSecondArr], [d, ...restThirdArr], [e, ...restFourthArr]] = arr
  140. const arrResult = [restFisrtArr, restSecondArr, restThirdArr, restFourthArr]
  141. console.log(arrResult)
  142. }
  143. // For Alert
  144. // Есть массив["John", "Paul", "George", "Ringo"].Выведите каждое имя отдельным alert(), используя цикл for ....of
  145. {
  146. const arr = ["John", "Paul", "George", "Ringo"]
  147. for (let name of arr) {
  148. alert(name)
  149. }
  150. }
  151. // For Select Option
  152. // Используя заготовку выше, создайте выпадающий список с валютами.Элементы выпадающего списка создаются с помощью тэга < option >
  153. {
  154. const currencies = ["USD", "EUR", "GBP", "UAH"]
  155. let str = "<select>"
  156. for (let currency of currencies) {
  157. str += `<option>${currency}</option>`
  158. }
  159. str += "</select>"
  160. document.write(str)
  161. }
  162. // For Table Horizontal
  163. // Аналогично, добейтесь вывода имен в ячейки таблицы по горизонтали(одна строка с четырьмя ячейками)
  164. {
  165. const names = ["John", "Paul", "George", "Ringo"]
  166. let str = "<table>"
  167. str += "<tr>"
  168. for (let name of names) {
  169. str += `<td>${name}</td>`
  170. }
  171. str += "</tr>"
  172. str += "</table>"
  173. document.write(str)
  174. }
  175. // For Table Vertical
  176. // Аналогично, добейтесь вывода имен в ячейки таблицы по вертикали(одна колонка с четырьмя строками, в каждой строке - одна ячейка)
  177. {
  178. const names = ["John", "Paul", "George", "Ringo"]
  179. let str = "<table>"
  180. for (let name of names) {
  181. str += `<tr><td>${name}</td></tr>`
  182. }
  183. str += "</table>"
  184. document.write(str)
  185. }
  186. // For Table Letters
  187. // Используя заготовку выше, создайте таблицу 3x4.В каждой строке по три ячейки с буквами, четыре строки, так как 4 валюты в массиве.
  188. {
  189. const currencies = ["USD", "EUR", "GBP", "UAH"]
  190. let str = "<table>"
  191. for (let currency of currencies) {
  192. str += `<tr>`
  193. console.log(currency)
  194. for (let letter of currency) {
  195. str += `<td>${letter}</td>`
  196. console.log(letter)
  197. }
  198. str += `</tr>`
  199. }
  200. str += "</table>"
  201. document.write(str)
  202. }
  203. // For Multiply Table
  204. // Выведите таблицу умножения 5x5 из задания Multiply table в таблицу, используя вложенные for .... of и document.write.
  205. // Сделайте черезстрочную подсветку - задавайте четным строкам один цвет фона, нечетным - другой
  206. {
  207. 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]]
  208. let i = 0
  209. let str = `<table style="border-collapse: collapse;">`
  210. for (let string of arr) {
  211. str += (i % 2) ? `<tr style = "background-color:orange">` : `<tr style = "background-color:red">`
  212. i++
  213. for (let number of string) {
  214. str += `<td>${number}</td>`
  215. }
  216. str += `</tr>`
  217. }
  218. str += `</table>`
  219. document.write(str)
  220. }
  221. // Function Capitalize
  222. // Реализуйте задачу String: capitalize как отдельную функцию:
  223. {
  224. const capitalize = str => {
  225. let result = `${str[0].toUpperCase()}${str.slice(1).toLowerCase()}`
  226. return result //именно этот код обеспечит возврат результата функции
  227. }
  228. alert(capitalize(prompt('ВВедиТЕ ниже Любую ФраЗУ С РазныМ', 'ВВедиТЕ ниже Любую ФраЗУ С РазныМ')))
  229. }
  230. // Map Capitalize
  231. // Пусть пользователь вводит строку.Разбейте её по пробелам.Используя map и capitalize создайте массив в котором каждое слово будет с большой буквы.Соберите массив в строку обратно
  232. {
  233. const string = prompt('Введите в поле ниже фразу, которую вы считаете подходящей!', 'иЛИ оСТАВЬТЕ эту фразу по умолчанию').split(' ')
  234. const capsName = string.map(string => `${string[0].toUpperCase()}${string.slice(1).toLowerCase()}`)
  235. alert(capsName.join(' '))
  236. }
  237. // Filter Lexics
  238. // Пусть пользователь вводит строку.Разбейте её по пробелам. Используя filter верните true если элемент массива не состоит в определенном массиве недопустимых слов.Если же элемент массива - недопустимое слово, функция, переданная в filter должна возвращать false.Соберите массив в строку обратно
  239. {
  240. const string = prompt('Введите в поле ниже любую фразу с нецензурной лексикой', 'Или оставьте эту фразу с некрасивый и грубый словами').split(' ')
  241. const badWords = ['некрасивый', 'грубый']
  242. const result = string.filter(x => x !== badWords[0] && x !== badWords[1])
  243. alert(result.join(' '))
  244. }
  245. // Beep Lexics
  246. // Пусть пользователь вводит строку.Разбейте её по пробелам.Используя map и тернарный оператор верните из функции слово без изменений, если оно не состоит в каком - то другом массиве запрещенных слов.Если же слово состоит в этом списке, функция должна вернуть слово BEEP.Соберите массив обратно в строку через пробел.Таким образом вы сможете реализовать замену нескольких запрещенных слов на BEEP.
  247. {
  248. const string = prompt('Введите в поле ниже любую фразу с нецензурной лексикой', 'Или оставьте эту фразу с некрасивый и грубый словами').split(' ')
  249. const badWords = ['некрасивый', 'грубый']
  250. const result = string.map(x => x !== badWords[0] && x !== badWords[1] ? x : 'BEEP')
  251. alert(result.join(' '))
  252. }
  253. // Реализуйте задачу For Select Option используя reduce:
  254. {
  255. const currencies = ["USD", "EUR", "GBP", "UAH"]
  256. let str = "<select>"
  257. str += "<option>"
  258. str += currencies.reduce((a, b) => (`${a}</option>` + `<option>${b}</option>`))
  259. str += "</select>"
  260. document.write(str)
  261. }
  262. // НЕ РЕШЕНО
  263. // Пусть пользователь вводит строку с любыми парными скобками в ней, например[[]() { { { []() } } }]. Найдите место возможной ошибки(непарности) в этой строке.Для этого, каждую открывающую скобку добавляйте в стек. При нахождении закрывающей она должна соответствовать вершине стека.Если она не соответстует, выведите сообщение об ошибке и позицию в строке.Если соответствует - уберите скобку из стека.Если строка ошибок не содержит, порадуйте пользователя.
  264. // Например, строки с проблемой: [(}], [(()()()], {()()[()()}]{ { { } } }
  265. {
  266. }