js.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464
  1. // 1. Literals +
  2. // Найдите несколько окружающих объектов реального мира и создайте соответственные объекты Javascript. Например:
  3. /*{
  4. const dog = {
  5. name : "leo",
  6. color : "orange",
  7. breed : "spitz",
  8. }
  9. }*/
  10. // 2. Literals expand +
  11. // Дайте возможность пользователю добавить любые два свойства в эти объекты с любыми значениями. Обеспечьте ввод названия
  12. // ключа и значения через prompt прямо в литерале объекта {}
  13. /*{
  14. const car = {
  15. brand : "Toyota",
  16. }
  17. car[prompt("Введите ключ")] = prompt('Введите значение для ключа');
  18. car[prompt("Введите ключ")] = prompt('Введите значение для ключа');
  19. console.log(car)
  20. }*/
  21. //3. Literals copy +
  22. // Пусть пользователь введет еще одно свойство в переменную. Вставьте в новый объект эту переменную.
  23. // Скопируйте объект из предыдущего задания в новый объект.
  24. /*{
  25. const car = {
  26. brand : "Toyota",
  27. model : "Camry",
  28. year : "2022"
  29. }
  30. const newCar = {...car}
  31. newCar[prompt("Введите ключ")] = prompt('Введите значение для ключа');
  32. console.log(newCar)
  33. }*/
  34. //4. Html tree +
  35. /*{
  36. let form = {
  37. tagName : 'form',
  38. children : [
  39. {
  40. tagName: 'div',
  41. children: [
  42. {
  43. tagName: "span",
  44. children: ["Enter a data please:"],
  45. },
  46. {
  47. tagName: 'input',
  48. attrs: {
  49. type: 'text',
  50. id: 'name'
  51. },
  52. },
  53. {
  54. tagName: 'input',
  55. attrs: {
  56. type: 'text',
  57. id: 'surname'
  58. }
  59. }
  60. ],
  61. },
  62. {
  63. tagName: 'div',
  64. children: [
  65. {
  66. tagName: 'button',
  67. attrs: {
  68. id: 'ok'
  69. },
  70. children: ["OK"]
  71. },
  72. {
  73. tagName: 'button',
  74. attrs: {
  75. type: 'text',
  76. id: 'cancel'
  77. },
  78. children: ["Cancel"]
  79. }
  80. ]
  81. }
  82. ]
  83. }
  84. console.log(form.children[1].children[1].children);
  85. console.log(form.children[0].children[2].attrs.id)
  86. } */
  87. // 5. Parent +
  88. // Добавьте каждому объекту тэга из предыдущего задания связь с родителем, используя свойство parent и присвоение
  89. /*{
  90. let form = {
  91. tagName : 'form',
  92. children : [
  93. {
  94. tagName: 'div',
  95. children: [
  96. {
  97. tagName: "span",
  98. children: ["Enter a data please:"],
  99. },
  100. {
  101. tagName: 'input',
  102. attrs: {
  103. type: 'text',
  104. id: 'name'
  105. },
  106. },
  107. {
  108. tagName: 'input',
  109. attrs: {
  110. type: 'text',
  111. id: 'surname'
  112. }
  113. }
  114. ],
  115. },
  116. {
  117. tagName: 'div',
  118. children: [
  119. {
  120. tagName: 'button',
  121. attrs: {
  122. id: 'ok'
  123. },
  124. children: ["OK"]
  125. },
  126. {
  127. tagName: 'button',
  128. attrs: {
  129. type: 'text',
  130. id: 'cancel'
  131. },
  132. children: ["Cancel"]
  133. }
  134. ]
  135. }
  136. ]
  137. }
  138. body.children[0].parent = body;
  139. body.children[1].parent = body;
  140. body.children[0].children[0].parent = body.children[0].parent;
  141. body.children[0].children[1].parent = body.children[0].parent;
  142. body.children[0].children[2].parent = body.children[0].parent;
  143. body.children[0].children[3].parent = body.children[0].parent;
  144. body.children[1].children[0].parent = body.children[1].parent;
  145. body.children[1].children[1].parent = body.children[1].parent;
  146. }
  147. */
  148. // 6. Change OK +
  149. // Добавьте(или измените) любой введенный пользователем атрибут тэга <button id='ok'> из задания HTML Tree.
  150. // Пользователь также вводит значение этого атрибута
  151. /*{
  152. let form = {
  153. tagName : 'form',
  154. children : [
  155. {
  156. tagName: 'div',
  157. children: [
  158. {
  159. tagName: "span",
  160. children: ["Enter a data please:"],
  161. },
  162. {
  163. tagName: 'input',
  164. attrs: {
  165. type: 'text',
  166. id: 'name',
  167. },
  168. },
  169. {
  170. tagName: 'input',
  171. attrs: {
  172. type: 'text',
  173. id: 'surname'
  174. }
  175. }
  176. ],
  177. },
  178. {
  179. tagName: 'div',
  180. children: [
  181. {
  182. tagName: 'button',
  183. attrs: {
  184. id: 'ok'
  185. },
  186. children: ["OK"]
  187. },
  188. {
  189. tagName: 'button',
  190. attrs: {
  191. type: 'text',
  192. id: 'cancel'
  193. },
  194. children: ["Cancel"]
  195. }
  196. ]
  197. }
  198. ]
  199. }
  200. form.children[1].children[0].attrs['maxLength'] = prompt('Введите значение maxLength');
  201. console.log(form.children[1].children[0].attrs)
  202. }*/
  203. //7. Destructure +
  204. // Используя деструктуризацию структуры из задания HTML Tree, Выведите значения текста в тэге span,
  205. // Выведите значения текста во второй кнопке и Выведите значение атрибута id во втором input.
  206. /*{
  207. let form = {
  208. tagName : 'form',
  209. children : [
  210. {
  211. tagName: 'div',
  212. children: [
  213. {
  214. tagName: "span",
  215. children: ["Enter a data please:"],
  216. },
  217. {
  218. tagName: 'input',
  219. attrs: {
  220. type: 'text',
  221. id: 'name',
  222. },
  223. },
  224. {
  225. tagName: 'input',
  226. attrs: {
  227. type: 'text',
  228. id: 'surname'
  229. }
  230. }
  231. ],
  232. },
  233. {
  234. tagName: 'div',
  235. children: [
  236. {
  237. tagName: 'button',
  238. attrs: {
  239. id: 'ok'
  240. },
  241. children: ["OK"]
  242. },
  243. {
  244. tagName: 'button',
  245. attrs: {
  246. type: 'text',
  247. id: 'cancel'
  248. },
  249. children: ["Cancel"]
  250. }
  251. ]
  252. }
  253. ]
  254. }
  255. const textSpan = form.children[0].children[0].children;
  256. console.log(textSpan);
  257. const textButton = form.children[1].children[1].children;
  258. console.log(textButton);
  259. const id = form.children[0].children[2].attrs.id;
  260. console.log(id)
  261. } */
  262. // 8. Destruct array +
  263. // напишите код, который используя деструктуризацию положит:
  264. // четные числа в переменные even1, even2; нечетные в odd1, odd2, odd3; буквы в отдельный массив
  265. /*{
  266. let arr = [1,2,3,4,5,"a","b","c"];
  267. [odd1, even1, odd2, even2, odd3, ...letters] = arr;
  268. } */
  269. // 9. Destruct string +
  270. //// напишите код, который используя деструктуризацию положит: число в переменную number; букву a в переменную s1;
  271. // букву b в переменную s2; букву c в переменную s3
  272. /*{
  273. let arr = [1, "abc"];
  274. [number, [s1, s2, s3]] = arr;
  275. } */
  276. //10. Destruct 2 +
  277. //извлеките используя деструктуризацию имена детей в переменные name1 и name2
  278. /*{
  279. let obj = { name: 'Ivan',
  280. surname: 'Petrov',
  281. children: [
  282. {name: 'Maria'},
  283. {name: 'Nikolay'}]};
  284. const [name1,name2] = obj.children;
  285. console.log(name1, name2)
  286. } */
  287. // 11. Destruct 3 +
  288. // извлеките используя деструктуризацию объектов два первых элемента и длину массива в переменные a, b и length
  289. /*{
  290. const arr = [1,2,3,4,5,6,7,10];
  291. const {0:a, 1:b, length} = arr;
  292. }*/
  293. // 12. Copy delete +
  294. // Сделайте копию одного из объектов из задания Literals без ключа, который введет пользователь.
  295. /*{
  296. const dog = {
  297. name: "leo",
  298. color: "orange",
  299. breed: "spitz",
  300. }
  301. const dog2 = {...dog};
  302. dog2[prompt('Добавьте одно из свойств собаки')] = prompt('Введите значение');
  303. console.log(dog2)
  304. } */
  305. // 13.Currency real rate +
  306. // Ниже приведен код, который скачивает актуальную информацию о курсах валют. Скопируйте ссылку из него вставьте в
  307. // браузер интереса ради. Реализуйте калькулятор обмена валют следующим образом:
  308. /*{
  309. let sum = prompt("Введите сумму в исходной валюте")
  310. fetch('https://open.er-api.com/v6/latest/USD').then(res => res.json())
  311. .then(data => {
  312. const {[prompt("Введите исходную валюту").toUpperCase()]:baseCurrency} = data.rates;
  313. const {[prompt("Введите валюту в которую просходит конвертация").toUpperCase()]:quoteCurrency} = data.rates;
  314. let result = baseCurrency/quoteCurrency*sum;
  315. console.log(result)
  316. console.log(data)
  317. })
  318. }*/
  319. // 14. Currency drop down +
  320. // Сделайте выпадающий список с названиями всех валют, используя код из прошлого задания и накопление HTML-тэгов
  321. // в строковой переменной. Для выпадающих списков в HTML предусмотрены тэги <select> и <option>
  322. /* { fetch('https://open.er-api.com/v6/latest/USD').then(res => res.json())
  323. .then(data => {
  324. console.log(data);
  325. let rates = Object.keys(data.rates);
  326. console.log(rates);
  327. let str = "<select>";
  328. for (let currency of rates){
  329. str += "<option>"+ currency + "</option>";
  330. }
  331. str += "</select>"
  332. document.write(str);
  333. })
  334. } */
  335. // 15. Currency table +
  336. // Сделайте двумерную таблицу с курсами между всеми возможными парами валют по типу таблицы Пифагора, используя
  337. // заготовку из задания Currency real rate:
  338. /*
  339. fetch('https://open.er-api.com/v6/latest/USD').then(res => res.json())
  340. .then(data => {
  341. let table = '<table>'
  342. table += '<tr><td></td>'
  343. for (let currency in data.rates){
  344. table += '<td>' + currency + '</td>'
  345. }
  346. table += '</tr>'
  347. for (let currencyVertical in data.rates){
  348. table += '<tr><td>' + currencyVertical + '</td>';
  349. for (let currencyHorizontal in data.rates) {
  350. table += `<td>${data.rates[currencyHorizontal] / data.rates[currencyVertical]}</td>`
  351. }
  352. }
  353. table += '</table>'
  354. document.write(table)
  355. })
  356. */
  357. //16. Form +
  358. // Напишите код, который их любого объекта создает форму HTML. Например для такого объекта
  359. /*{
  360. const car = {
  361. "Name":"chevrolet chevelle malibu",
  362. "Cylinders":8,
  363. "Displacement":307,
  364. "Horsepower":130,
  365. "Weight_in_lbs":3504,
  366. "Origin":"USA",
  367. "in_production": false
  368. }
  369. for (const [key, values] of Object.entries(car)) {
  370. console.log(key, values)
  371. let str = "<form>";
  372. if (typeof values === 'string') {
  373. str += "<label>" + key + "<input type='text' value='" + values + "'/>" + "</label>";
  374. } else if (typeof values === 'number') {
  375. str += "<label>" + key + "<input type='number' value='" + values + "'/>" + "</label>";
  376. } else if (typeof values === 'boolean') {
  377. str += "<label>" + key + "<input type='checkbox' value='" + values + "'/>" + "</label>";
  378. }
  379. str += "</form>"
  380. document.write(str);
  381. }
  382. } */
  383. //17. Table в конспекте
  384. // Даден любой массив с объектами
  385. const persons = [
  386. {
  387. name: 'Мария',
  388. fatherName: 'Ивановна',
  389. surname: 'Иванова',
  390. sex: 'female'
  391. },
  392. {
  393. name: 'Николай',
  394. fatherName: 'Иванович',
  395. surname: 'Иванов',
  396. age: 15
  397. },
  398. {
  399. name: 'Петр',
  400. fatherName: 'Иванович',
  401. surname: 'Иванов',
  402. married: true
  403. },
  404. ]
  405. let arrColumn = [];
  406. for (let obj of persons) {
  407. for (let key in obj) {
  408. if (!(arrColumn.includes(key))) {arrColumn.push(key)}
  409. }
  410. }
  411. let table = '<table>';
  412. table += '<tr>'
  413. for (let th of arrColumn){
  414. table += '<th>' + th + '</th>'
  415. }
  416. table += '</tr>'
  417. for ( let obj of persons) {
  418. table += '<tr>';
  419. for (column of arrColumn){
  420. table += '<td>'
  421. if (obj[column]) { table += obj[column] }
  422. table += '</td>'
  423. }
  424. table += '</tr>';
  425. }
  426. table += '</table>'
  427. document.write(table)