script.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. // Confirms
  2. // Сохраните в массив ответы на вопросы, заданные с помощью confirm. Используйте литеральный (декларативный)
  3. // синтаксис массивов ([....,....,....])
  4. confirms: {
  5. let responseArray = [confirm('Do you like travel?'), confirm('Are you live in Ukraine?'),
  6. confirm('Do you eat fish?')];
  7. console.log(responseArray);
  8. }
  9. // Prompts
  10. // Сохраните в массив ответы на вопросы, заданные с помощью prompts. Используйте доступ к массиву по индексу
  11. // и присвоение (arr[....] = ....)
  12. prompts: {
  13. let arr = [];
  14. arr[0] = prompt('What are you doing?');
  15. arr[1] = prompt('How old are you?');
  16. arr[2] = prompt('Where are you from?');
  17. console.log(arr);
  18. }
  19. // Item access
  20. // Попросите пользователя ввести (prompt) индекс в массиве. Выведите значение элемента по этому индексу.
  21. // Попробуйте так же ввести индекс "length".
  22. item_access: {
  23. let arr = ['apple', 'orange', 'banana', 'lemon', 'cherry', 'raspberry'];
  24. alert(arr[prompt('Enter an index')]);
  25. }
  26. // Item change
  27. // Попросите пользователя ввести (prompt) индекс в массиве, а так же значение для этого индекса. Присвойте
  28. // в введенный индекс введенное значение
  29. item_change: {
  30. let arr = [];
  31. arr[prompt('Enter an index')] = prompt('Enter value');
  32. console.log(arr);
  33. }
  34. // Multiply table
  35. // Создайте таблицу умножения 5x5 используя декларативный синтаксис вложенных массивов
  36. // const arr = [[....], [....], [....], .....]. Числа во вложенных массивах должны быть равны произведению
  37. // индекса внешнего массива на индекс внутреннего массива: arr[2][3] === 6
  38. multiply_table: {
  39. const arr =
  40. [[0, 0, 0, 0, 0],
  41. [0, 1, 2, 3, 4],
  42. [0, 2, 4, 6, 8],
  43. [0, 3, 6, 9, 12],
  44. [0, 4, 8, 12, 16]];
  45. alert(arr[prompt('Enter an outer array index')][prompt('Enter an internal array index')]);
  46. // Multiply table slice
  47. // Используя slice создайте массив массивов (другую таблицу/матрицу) из таблицы умножения, в которой не
  48. // будет нулей
  49. let arrWithoutZeros = arr.slice(1);
  50. arrWithoutZeros[0] = arrWithoutZeros[0].slice(1);
  51. arrWithoutZeros[1] = arrWithoutZeros[1].slice(1);
  52. arrWithoutZeros[2] = arrWithoutZeros[2].slice(1);
  53. arrWithoutZeros[3] = arrWithoutZeros[3].slice(1);
  54. console.log(arrWithoutZeros);
  55. // Multiply table rest
  56. // Реализуйте задание Multiply table slice, используя оператор rest при деструктуризации. Используйте
  57. // вложенную деструктуризацию. После получения четырех обрезанных вложенных массивов - соберите общий
  58. // массив без нулей
  59. let [[a], [b, ...other1], [c, ...other2], [d, ...other3], [e, ...other4]] = arr;
  60. let arrWithoutZerosRest = [other1, other2, other3, other4];
  61. console.log(arrWithoutZerosRest);
  62. // Copy
  63. // Скопируйте массив созданный в задании Multiply table неглубоко
  64. let copy = [...arr];
  65. console.log(copy);
  66. // Deep Copy
  67. // Скопируйте массив созданный в задании Multiply table включая вложенные массивы (глубокая копия)
  68. let deepCopy = JSON.parse(JSON.stringify(arr));
  69. console.log(deepCopy);
  70. // Flat
  71. // Соберите все элементы всех вложенных массивов из задания Multiply table в один массив. Его длина должна
  72. // быть равна 25. Используйте spread-оператор
  73. let allElement = [...arr[0], ...arr[1], ...arr[2], ...arr[3], ...arr[4]];
  74. console.log(allElement);
  75. console.log(allElement.length);
  76. }
  77. // IndexOf Word
  78. // Спросите у пользователя строку из нескольких слов. Спросите у него искомое слово. Выведите, каким по
  79. // счету является это слово в строке из нескольких слов. Если слово не найдено, выведите сообщение об этом
  80. // (а не -1)
  81. index_of_word: {
  82. const arrayOfStr = prompt('Enter a string').split(' ');
  83. const searchWord = prompt('Enter the search word');
  84. alert(arrayOfStr.indexOf(searchWord) == -1 ?
  85. 'Word not found' : 'Your word is the ' + (arrayOfStr.indexOf(searchWord) + 1) + ' on the string');
  86. }
  87. // Reverse
  88. // Добавьте в массив пять введенных пользователем через prompt элементов(используйте push). Создайте другой
  89. // массив с этими же элементами в обратном порядке. Для этого извлекайте элементы из первого массива
  90. // используя pop, добавляйте их во второй используя push
  91. reverse: {
  92. let arr = [];
  93. let firstElement = prompt('Enter something');
  94. arr.push(firstElement);
  95. let secondElement = prompt('Enter something');
  96. arr.push(secondElement);
  97. let thirdElement = prompt('Enter something');
  98. arr.push(thirdElement);
  99. let fourthElement = prompt('Enter something');
  100. arr.push(fourthElement);
  101. let fifthElement = prompt('Enter something');
  102. arr.push(fifthElement);
  103. let arrReverse = [];
  104. arr.pop(fifthElement);
  105. arrReverse.push(fifthElement);
  106. arr.pop(fourthElement);
  107. arrReverse.push(fourthElement);
  108. arr.pop(thirdElement);
  109. arrReverse.push(thirdElement);
  110. arr.pop(secondElement);
  111. arrReverse.push(secondElement);
  112. arr.pop(firstElement);
  113. arrReverse.push(firstElement);
  114. console.log(arrReverse);
  115. // Reverse 2
  116. // Переверните второй массив из предыдущего задания еще раз (последовательность будет как в первом массиве),
  117. // используя shift и unshift
  118. let arrReverse2 = [];
  119. arrReverse.shift(fifthElement);
  120. arrReverse2.unshift(fifthElement);
  121. arrReverse.shift(fourthElement);
  122. arrReverse2.unshift(fourthElement);
  123. arrReverse.shift(thirdElement);
  124. arrReverse2.unshift(thirdElement);
  125. arrReverse.shift(secondElement);
  126. arrReverse2.unshift(secondElement);
  127. arrReverse.shift(firstElement);
  128. arrReverse2.unshift(firstElement);
  129. console.log(arrReverse2);
  130. }
  131. // Array Equals
  132. // Создайте код, в котором будет две переменных с массивами (arr и arr2), которые равны друг другу
  133. // (arr1 === arr2)
  134. array_equals: {
  135. const arr = [1, 2, 3, 4];
  136. const arr2 = arr;
  137. console.log(arr === arr2);
  138. }
  139. // Destruct
  140. // Извлеките первую, пятую и девятую букву из строки, введенной пользователем, используя деструктуризацию.
  141. // Выведите их
  142. destruct: {
  143. let [letter1, , , , letter5, , , , letter9] =
  144. prompt('Enter the string longer then 9 characters').split('');
  145. alert(letter1 + ' ' + letter5 + ' ' + letter9);
  146. }
  147. // Destruct default
  148. // Извлеките вторую, четвертую и пятую букву из строки, введенной пользователем, используя деструктуризацию.
  149. // Если в строке таких букв не окажется задайте переменным значение по умолчанию ! (восклицательный знак).
  150. // Выведите эти переменные
  151. destruct_default: {
  152. let [, letter2 = '!', , letter4 = '!', letter5 = '!'] =
  153. prompt('Enter the string').split('');
  154. alert(letter2 + ' ' + letter4 + ' ' + letter5);
  155. }
  156. // For Alert
  157. // Есть массив ["John", "Paul", "George", "Ringo"]. Выведите каждое имя отдельным alert(), используя цикл
  158. // for .... of
  159. for_alert: {
  160. let names = ['John', 'Paul', 'George', 'Ringo'];
  161. for (let name of names) {
  162. alert(`Hello, ${name}`);
  163. }
  164. }
  165. // Function Capitalize
  166. // Реализуйте задачу String: capitalize как отдельную функцию:
  167. function_capitalize: {
  168. const capitalize = str => {
  169. let result = str.slice(0, 1).toUpperCase() + str.slice(1).toLowerCase();
  170. return result //именно этот код обеспечит возврат результата функции
  171. }
  172. console.log(capitalize("cANBerRa")); //Canberra
  173. // Map Capitalize
  174. // Пусть пользователь вводит строку. Разбейте её по пробелам. Используя map и capitalize создайте массив в
  175. // котором каждое слово будет с большой буквы. Соберите массив в строку обратно
  176. let arrOfStr = prompt('Enter the string').split(' ');
  177. let everyWordIsCapitalized = arrOfStr.map(x => capitalize(x)).join(' ');
  178. alert(everyWordIsCapitalized);
  179. }
  180. // Filter Lexics
  181. // Пусть пользователь вводит строку. Разбейте её по пробелам. Используя filter верните true если элемент
  182. // массива не состоит в определенном массиве недопустимых слов. Если же элемент массива - недопустимое
  183. // слово, функция, переданная в filter должна возвращать false. Соберите массив в строку обратно.
  184. filter_lexics: {
  185. let arrOfStr = prompt('Enter the string').split(' ');
  186. let blockList = ['chocolate', 'coffee', 'cigarettes'];
  187. let filteredStr = arrOfStr.filter(item => !blockList.includes(item.toLowerCase())).join(' ');
  188. alert(filteredStr);
  189. }
  190. // Beep Lexics
  191. // Пусть пользователь вводит строку. Разбейте её по пробелам. Используя map и тернарный оператор верните из
  192. // функции слово без изменений, если оно не состоит в каком-то другом массиве запрещенных слов. Если же
  193. // слово состоит в этом списке, функция должна вернуть слово BEEP. Соберите массив обратно в строку через
  194. // пробел. Таким образом вы сможете реализовать замену нескольких запрещенных слов на BEEP.
  195. beep_lexics: {
  196. let arrOfStr = prompt('Enter the string').split(' ');
  197. let blockList = ['chocolate', 'coffee', 'cigarettes'];
  198. let filteredStr = arrOfStr.map(item => blockList.includes(item.toLowerCase()) ? 'BEEP' : item).join(' ');
  199. alert(filteredStr);
  200. }
  201. // For Brackets Hell Check
  202. // Пусть пользователь вводит строку с любыми парными скобками в ней, например [ [ ] () {{{[]()}}}]. Найдите
  203. // место возможной ошибки (непарности) в этой строке. Для этого, каждую открывающую скобку добавляйте в стек.
  204. // При нахождении закрывающей она должна соответствовать вершине стека. Если она не соответстует, выведите
  205. // сообщение об ошибке и позицию в строке. Если соответствует - уберите скобку из стека. Если строка ошибок
  206. // не содержит, порадуйте пользователя.
  207. for_brackets_hell_check: {
  208. const line = prompt();
  209. const bracketsStack = [];
  210. let i = 0;
  211. let result = true;
  212. for (let character of line) {
  213. //не обращайте внимания на символы, кроме трех видов скобок
  214. if (character == '(' || character == '[' || character == '{') {
  215. bracketsStack.push(character);
  216. }
  217. const lastOpenedBracket = bracketsStack[bracketsStack.length - 1];
  218. if (character == ')' && lastOpenedBracket != '('
  219. || character == ']' && lastOpenedBracket != '['
  220. || character == '}' && lastOpenedBracket != '{') {
  221. result = false;
  222. break; //оператор break прерывает цикл преждевременно
  223. }
  224. if (character == ')' || character == ']' || character == '}') {
  225. bracketsStack.pop(character);
  226. }
  227. i++;
  228. }
  229. alert(result ? 'VALID' : 'ERROR');
  230. }