index.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501
  1. //Confirms
  2. //Сохраните в массив ответы на вопросы, заданные с помощью confirm. Используйте литеральный (декларативный) синтаксис массивов ([....,....,....])
  3. {
  4. const arr = [confirm('яблоко фрукт?'), confirm('груша фрукт?'), confirm('морковь фрукт?')]
  5. }
  6. //Prompts
  7. //Сохраните в массив ответы на вопросы, заданные с помощью prompts. Используйте доступ к массиву по индексу и присвоение (arr[....] = ....)
  8. {
  9. const arr = [];
  10. arr[0] = confirm('яблоко фрукт?');
  11. arr[1] = confirm('груша фрукт?');
  12. arr[2] = confirm('морковь фрукт?');
  13. }
  14. //Item access
  15. //Попросите пользователя ввести (prompt) индекс в массиве. Выведите значение элемента по этому индексу. Попробуйте так же ввести индекс "length".
  16. {
  17. alert ( arr[ prompt() ] )
  18. }
  19. //Item change
  20. //Попросите пользователя ввести (prompt) индекс в массиве, а так же значение для этого индекса. Присвойте в введенный индекс введенное значение
  21. {
  22. const arr = [];
  23. const arrIndex = prompt('введите индекс в массиве');
  24. const arrValue = prompt('введите индекс в массиве');
  25. arr[arrIndex] = arrValue;
  26. }
  27. //Multiply table
  28. //Создайте таблицу умножения 5x5 используя декларативный синтаксис вложенных массивов const arr = [[....], [....], [....], .....]. Числа во вложенных массивах должны быть равны произведению индекса внешнего массива на индекс внутреннего массива: arr[2][3] === 6
  29. { const arr = [[],[],[],[],[],[]]
  30. arr[0][0] = 0;
  31. arr[0][1] = 0;
  32. arr[0][2] = 0;
  33. arr[0][3] = 0;
  34. arr[0][4] = 0;
  35. arr[0][5] = 0;
  36. arr[1][0] = 0;
  37. arr[1][1] = 1;
  38. arr[1][2] = 2;
  39. arr[1][3] = 3;
  40. arr[1][4] = 4;
  41. arr[1][5] = 5;
  42. arr[2][0] = 0;
  43. arr[2][1] = 2;
  44. arr[2][2] = 4;
  45. arr[2][3] = 6;
  46. arr[2][4] = 8;
  47. arr[2][5] = 10;
  48. arr[3][0] = 0;
  49. arr[3][1] = 3;
  50. arr[3][2] = 6;
  51. arr[3][3] = 9;
  52. arr[3][4] = 12;
  53. arr[3][5] = 15;
  54. arr[4][0] = 0;
  55. arr[4][1] = 4;
  56. arr[4][2] = 8;
  57. arr[4][3] = 12;
  58. arr[4][4] = 16;
  59. arr[4][5] = 20;
  60. arr[5][0] = 0;
  61. arr[5][1] = 5;
  62. arr[5][2] = 10;
  63. arr[5][3] = 15;
  64. arr[5][4] = 20;
  65. arr[5][5] = 25;
  66. }
  67. //или так. из задания не понятно что конкретно должно быть.
  68. {
  69. const arr = [
  70. [0,0,0,0,0,0],
  71. [0,1,2,3,4,5],
  72. [0,2,4,6,8,10],
  73. [0,3,6,9,12,15],
  74. [0,4,8,12,16,20],
  75. [0,5,10,15,20,25]
  76. ];
  77. }
  78. //Multiply table slice
  79. //Используя slice создайте массив массивов (другую таблицу/матрицу) из таблицы умножения, в которой не будет нулей
  80. const arrCopy = [arr[1].slice(1), arr[2].slice(1), arr[3].slice(1), arr[4].slice(1), arr[5].slice(1)]
  81. //IndexOf Word
  82. //Спросите у пользователя строку из нескольких слов. Спросите у него искомое слово. Выведите, каким по счету является это слово в строке из нескольких слов. Если слово не найдено, выведите сообщение об этом (а не -1)
  83. {
  84. const str = prompt ('напишите небольшое предложение.');
  85. const strArr = str.split(' ');
  86. const strWordSearch = prompt ('напишите слово из предложения которое вы ввели');
  87. const strWordIndex = strArr.indexOf(strWordSearch)
  88. if (strWordIndex < 0){
  89. alert(`слово "${strWordSearch}" не найдено`)
  90. }else{
  91. alert (`слово "${strWordSearch}" будет № ${strWordIndex + 1} по порядку в строке "${str}"`)
  92. }
  93. }
  94. // Reverse
  95. // Добавьте в массив пять введенных пользователем через prompt элементов(используйте push). Создайте другой массив с этими же элементами в обратном порядке. Для этого извлекайте элементы из первого массива используя pop, добавляйте их во второй используя push
  96. {
  97. const arr = [];
  98. arr.push( prompt("введите значение массива №1") );
  99. arr.push( prompt("введите значение массива №2") );
  100. arr.push( prompt("введите значение массива №3") );
  101. arr.push( prompt("введите значение массива №4") );
  102. arr.push( prompt("введите значение массива №5") );
  103. const arrCopy = [];
  104. arrCopy.push(arr.pop());
  105. arrCopy.push(arr.pop());
  106. arrCopy.push(arr.pop());
  107. arrCopy.push(arr.pop());
  108. arrCopy.push(arr.pop());
  109. }
  110. //Reverse 2
  111. //Переверните второй массив из предыдущего задания еще раз (последовательность будет как в первом массиве), используя shift и unshift
  112. {
  113. const arr = [];
  114. arr.push( prompt("введите значение массива №1") );
  115. arr.push( prompt("введите значение массива №2") );
  116. arr.push( prompt("введите значение массива №3") );
  117. arr.push( prompt("введите значение массива №4") );
  118. arr.push( prompt("введите значение массива №5") );
  119. const arrCopy = [];
  120. arrCopy.push(arr.pop());
  121. arrCopy.push(arr.pop());
  122. arrCopy.push(arr.pop());
  123. arrCopy.push(arr.pop());
  124. arrCopy.push(arr.pop());
  125. const arrCopyRevers = [];
  126. arrCopyRevers.unshift(arrCopy.shift());
  127. arrCopyRevers.unshift(arrCopy.shift());
  128. arrCopyRevers.unshift(arrCopy.shift());
  129. arrCopyRevers.unshift(arrCopy.shift());
  130. arrCopyRevers.unshift(arrCopy.shift());
  131. }
  132. //Copy
  133. //Скопируйте массив созданный в задании Multiply table неглубоко
  134. {
  135. const arr = [
  136. [0,0,0,0,0,0],
  137. [0,1,2,3,4,5],
  138. [0,2,4,6,8,10],
  139. [0,3,6,9,12,15],
  140. [0,4,8,12,16,20],
  141. [0,5,10,15,20,25]
  142. ];
  143. const arr2 = [arr.slice()];
  144. }
  145. //Deep Copy
  146. //Скопируйте массив созданный в задании Multiply table включая вложенные массивы (глубокая копия)
  147. {
  148. const arr = [
  149. [0,0,0,0,0,0],
  150. [0,1,2,3,4,5],
  151. [0,2,4,6,8,10],
  152. [0,3,6,9,12,15],
  153. [0,4,8,12,16,20],
  154. [0,5,10,15,20,25]
  155. ];
  156. //условно руками
  157. const arrCopy = [
  158. arr[0].slice(),
  159. arr[1].slice(),
  160. arr[2].slice(),
  161. arr[3].slice(),
  162. arr[4].slice(),
  163. arr[5].slice(),
  164. ]
  165. // или циклом for of
  166. for (let a of arr) {
  167. arrCopy.push(a.slice());
  168. }
  169. }
  170. //Array Equals
  171. //Создайте код, в котором будет две переменных с массивами (arr и arr2), которые равны друг другу (arr1 === arr2)
  172. {
  173. const arr = [];
  174. const arr1 = arr;
  175. alert( arr===arr1)
  176. }
  177. //Flat
  178. //Соберите все элементы всех вложенных массивов из задания Multiply table в один массив. Его длина должна быть равна 25. Используйте spread-оператор
  179. {
  180. const arr = [
  181. [1,2,3,4,5],
  182. [2,4,6,8,10],
  183. [3,6,9,12,15],
  184. [4,8,12,16,20],
  185. [5,10,15,20,25]
  186. ];
  187. const arr1 = [...arr[0], ...arr[1], ...arr[2], ...arr[3], ...arr[4], ]
  188. }
  189. // Destruct
  190. // Извлеките первую, пятую и девятую букву из строки, введенной пользователем, используя деструктуризацию. Выведите их
  191. {
  192. let [letter1,,,,letter5,,,,letter9] = prompt('введите строку, я извлеку 1, 5 , девятую буквы').split('');
  193. alert(letter1 + letter5 + letter9);
  194. }
  195. //Destruct default
  196. //Извлеките вторую, четвертую и пятую букву из строки, введенной пользователем, используя деструктуризацию. Если в строке таких букв не окажется задайте переменным значение по умолчанию ! (восклицательный знак). Выведите эти переменные
  197. {
  198. let [,letter2 = '!',,letter4 = '!',letter5 = '!'] = prompt('введите строку, я извлеку 1, 5 , девятую буквы').split('');
  199. alert(letter2 + letter4 + letter5);
  200. }
  201. //Multiply table rest
  202. //Реализуйте задание Multiply table slice, используя оператор rest при деструктуризации. Используйте вложенную деструктуризацию. После получения четырех обрезанных вложенных массивов - соберите общий массив без нулей
  203. {
  204. const arr = [
  205. [0,0,0,0,0,0],
  206. [0,1,2,3,4,5],
  207. [0,2,4,6,8,10],
  208. [0,3,6,9,12,15],
  209. [0,4,8,12,16,20],
  210. [0,5,10,15,20,25]
  211. ];
  212. let [
  213. ,
  214. [, ...rest1],
  215. [, ...rest2],
  216. [, ... rest3],
  217. [, ...rest4],
  218. [, ...rest5]
  219. ] = arr;
  220. arrCopy = [rest1, rest2, rest3, rest4, rest5];
  221. }
  222. //For Alert
  223. //Есть массив ["John", "Paul", "George", "Ringo"]. Выведите каждое имя отдельным alert(), используя цикл for .... of
  224. {
  225. for (let name of ["John", "Paul", "George", "Ringo"]) {
  226. alert(name);
  227. }
  228. }
  229. //For Select Option
  230. /* const currencies = ["USD", "EUR", "GBP", "UAH"]
  231. let str = "<select>"
  232. for (let currency of currencies){
  233. // YOUR MAGIC HERE
  234. }
  235. str+= "</select>"
  236. document.write(str) //document.write отобразит ваш HTML на странице */
  237. //Используя заготовку выше, создайте выпадающий список с валютами. Элементы выпадающего списка создаются с помощью тэга <option>
  238. {
  239. const currencies = ["USD", "EUR", "GBP", "UAH"]
  240. let str = "<select>"
  241. for (let currency of currencies){
  242. str += "<option>"+ currency + "</option>"
  243. }
  244. str+= "</select>"
  245. document.write(str)
  246. }
  247. //For Table Horizontal
  248. /* const names = ["John", "Paul", "George", "Ringo"]
  249. let str = "<table>"
  250. for (let currency of currencies){
  251. // YOUR MAGIC HERE
  252. }
  253. str+= "</table>"
  254. document.write(str) //document.write отобразит ваш HTML на странице
  255. Аналогично, добейтесь вывода имен в ячейки таблицы по горизонтали (одна строка с четырьмя ячейками)*/
  256. {
  257. const names = ["John", "Paul", "George", "Ringo"]
  258. let str = "<table>"
  259. for (let name of names){
  260. str += "<td>" + name + "</td>"
  261. }
  262. str+= "</table>"
  263. document.write(str)
  264. }
  265. //For Table Vertical
  266. /*
  267. const names = ["John", "Paul", "George", "Ringo"]
  268. let str = "<table>"
  269. for (let name of names){
  270. // YOUR MAGIC HERE
  271. }
  272. str+= "</table>"
  273. document.write(str) //document.write отобразит ваш HTML на странице
  274. Аналогично, добейтесь вывода имен в ячейки таблицы по вертикали(одна колонка с четырьмя строками, в каждой строке - одна ячейка)
  275. */
  276. {
  277. const names = ["John", "Paul", "George", "Ringo"]
  278. let str = "<table>"
  279. for (let name of names){
  280. str += "<tr><td>" + name + "</td></tr>"
  281. }
  282. str+= "</table>"
  283. document.write(str)
  284. }
  285. //For Table Letters
  286. //Используя заготовку выше, создайте таблицу 3x4. В каждой строке по три ячейки с буквами, четыре строки, так как 4 валюты в массиве.
  287. const currencies = ["USD", "EUR", "GBP", "UAH"]
  288. let str = "<table>"
  289. for (let currency of currencies){ //цикл создает строки
  290. //одна итерация цикла создает ОДНУ СТРОКУ
  291. str += "<tr>"
  292. console.log(currency)
  293. for (let letter of currency){ //цикл создает ЯЧЕЙКИ в ОДНОЙ СТРОКЕ
  294. //одна итерация цикла создает ОДНУ ЯЧЕЙКУ
  295. str += "<td>" + letter + "</td>"
  296. console.log(letter)
  297. }
  298. str += "</tr>"
  299. }
  300. str+= "</table>"
  301. document.write(str) //document.write отобразит ваш HTML на странице
  302. //For Multiply Table
  303. //Выведите таблицу умножения 5x5 из задания Multiply table в таблицу, используя вложенные for .... of и document.write
  304. //Сделайте черезстрочную подсветку - задавайте четным строкам один цвет фона, нечетным - другой
  305. {
  306. const arr = [
  307. [0,0,0,0,0,0],
  308. [0,1,2,3,4,5],
  309. [0,2,4,6,8,10],
  310. [0,3,6,9,12,15],
  311. [0,4,8,12,16,20],
  312. [0,5,10,15,20,25]
  313. ];
  314. let str = "<table>"
  315. let i = 1
  316. for (let tr of arr){
  317. if (i++ % 2 === 0){
  318. str += '<tr style="background-color: grey;">'
  319. }else{
  320. str += "<tr>"
  321. }
  322. for (let td of tr){
  323. str += "<td>" + td + "</td>"
  324. }
  325. str += "</tr>"
  326. }
  327. str += "</table>"
  328. document.write(str)
  329. }
  330. //Function Capitalize
  331. //Реализуйте задачу String: capitalize как отдельную функцию:
  332. {
  333. let str = "cANBerRa";
  334. let f = (x) => x[0].toUpperCase() + x.slice(1).toLowerCase();
  335. let result = f(str);
  336. console.log(result); //Canberra
  337. }
  338. //Map Capitalize
  339. //Пусть пользователь вводит строку. Разбейте её по пробелам. Используя map и capitalize создайте массив в котором каждое слово будет с большой буквы. Соберите массив в строку обратно
  340. {
  341. let f = (x) => x[0].toUpperCase() + x.slice(1).toLowerCase();
  342. let str = prompt('введите строку');
  343. let arr = str.split(' ');
  344. let arrCapitalize = arr.map(f);
  345. alert (arrCapitalize.join(' '))
  346. }
  347. //Filter Lexics
  348. //Пусть пользователь вводит строку. Разбейте её по пробелам. Используя filter верните true если элемент массива не состоит в определенном массиве недопустимых слов. Если же элемент массива - недопустимое слово, функция, переданная в filter должна возвращать false. Соберите массив в строку обратно.
  349. {
  350. let str = prompt('введите строку. Ни слова о политике, я вырежу все фамилии президентов');
  351. let arr = str.split(" ");
  352. const f = (word) => {
  353. const arrBadWords = ["Кравчук","Кучма","Ющенко","Янукович","Порошенко","Зеленский"];
  354. for (let BadWord of arrBadWords){
  355. if (word.toLowerCase() === BadWord.toLowerCase()){ return false}
  356. }
  357. return true;
  358. }
  359. let arrNew = arr.filter(f);
  360. alert(arrNew.join(' '));
  361. }
  362. // Beep Lexics
  363. //Пусть пользователь вводит строку. Разбейте её по пробелам. Используя map и тернарный оператор верните из функции слово без изменений, если оно не состоит в каком-то другом массиве запрещенных слов. Если же слово состоит в этом списке, функция должна вернуть слово BEEP. Соберите массив обратно в строку через пробел. Таким образом вы сможете реализовать замену нескольких запрещенных слов на BEEP.
  364. {
  365. let str = prompt('введите строку. Ни слова о политике, я вырежу все фамилии президентов');
  366. let arr = str.split(" ");
  367. const f = (word) => {
  368. const arrBadWords = ["Кравчук","Кучма","Ющенко","Янукович","Порошенко","Зеленский"];
  369. for (let BadWord of arrBadWords){
  370. if (word.toLowerCase() === BadWord.toLowerCase()){ return "BEEP"}
  371. }
  372. return word;
  373. }
  374. let arrNew = arr.map(f);
  375. alert(arrNew.join(' '));
  376. }
  377. // Reduce HTML
  378. { const currencies = ["USD", "EUR", "GBP", "UAH"]
  379. let str = "<select>"
  380. str += currencies.reduce( (a,b) => a + "<option>" + b, "")
  381. str += "</select>"
  382. document.write(str)
  383. }
  384. //For Brackets Hell Check
  385. //Пусть пользователь вводит строку с любыми парными скобками в ней, например [ [ ] () {{{[]()}}}]. Найдите место возможной ошибки (непарности) в этой строке. Для этого, каждую открывающую скобку добавляйте в стек. При нахождении закрывающей она должна соответствовать вершине стека. Если она не соответстует, выведите сообщение об ошибке и позицию в строке. Если соответствует - уберите скобку из стека. Если строка ошибок не содержит, порадуйте пользователя.
  386. {
  387. const line = prompt()
  388. const bracketsStack = []
  389. let i = 0
  390. for (let character of line){
  391. if (character === "[" || character === "(" || character === "{" ){
  392. bracketsStack.push(character);
  393. }else if(character === ']' && bracketsStack.at(-1) === '[' ||
  394. character === '}' && bracketsStack.at(-1) === '{' ||
  395. character === ')' && bracketsStack.at(-1) === '('
  396. ){
  397. bracketsStack.pop()
  398. }
  399. else if (character !== " ") {
  400. alert ('Вероятно есть проблема, нет парной скобки на позиции: ' + i)
  401. break;
  402. }
  403. i++
  404. }
  405. if (i === line.length) alert('all ok!')
  406. }