script.js 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. // Literals
  2. // Найдите несколько окружающих объектов реального мира и создайте соответственные объекты Javascript. Например:
  3. literals: {
  4. const dog = {
  5. fur: 'golden',
  6. eyes: 'brown',
  7. purebred: true,
  8. }
  9. const pillow = {
  10. width: '70 sm',
  11. height: '50 sm',
  12. color: 'white',
  13. pillowcase: 'yes',
  14. }
  15. // Literals expand
  16. // Дайте возможность пользователю добавить любые два свойства в эти объекты с любыми значениями. Обеспечьте
  17. // ввод названия ключа и значения через prompt прямо в литерале объекта {}
  18. dog[prompt('What do you want to specify?')] = prompt('Enter the value');
  19. dog[prompt('What do you want to specify?')] = prompt('Enter the value');
  20. console.log(dog);
  21. // Literals copy
  22. // Пусть пользователь введет еще одно свойство в переменную. Вставьте в новый объект эту переменную. Скопируйте
  23. // объект из предыдущего задания в новый объект.
  24. const property = {
  25. [prompt('What do you want to specify?')]: prompt('Enter the value'),
  26. }
  27. let newObj = {
  28. ...property,
  29. ...dog,
  30. }
  31. console.log(newObj);
  32. // Copy delete
  33. // Сделайте копию одного из объектов из задания Literals без ключа, который введет пользователь.
  34. let copy = JSON.parse(JSON.stringify(dog));
  35. console.log(copy);
  36. }
  37. // Html tree
  38. // Сделайте декларативную JSON-структуру для тэгов выше, в которой:
  39. // каждый тэг будет объектом
  40. // имя тэга будет полем tagName
  41. // вложенные тэги будут в поле children
  42. // набор аттрибутов тэга будет в поле attrs.
  43. // Выведите значения текста во второй кнопке, используя . и [].
  44. // Выведите значение атрибута id во втором input, используя . и [].
  45. html_tree: {
  46. let body = {
  47. tagName: 'body',
  48. children: [
  49. {
  50. tagName: 'div',
  51. children: [
  52. {
  53. tagName: 'span',
  54. children: ['Enter a data please:'],
  55. },
  56. {
  57. tagName: 'br',
  58. },
  59. {
  60. tagName: 'input',
  61. attrs: {
  62. type: 'text',
  63. id: 'name',
  64. },
  65. },
  66. {
  67. tagName: 'input',
  68. attrs: {
  69. type: 'text',
  70. id: 'surname',
  71. },
  72. },
  73. ]
  74. },
  75. {
  76. tagName: 'div',
  77. children: [
  78. {
  79. tagName: 'button',
  80. attrs: {
  81. id: 'ok',
  82. },
  83. children: ['OK'],
  84. },
  85. {
  86. tagName: 'button',
  87. attrs: {
  88. id: 'cancel',
  89. },
  90. children: ['Cancel'],
  91. },
  92. ]
  93. }
  94. ]
  95. }
  96. console.log(body.children[1].children[1].children);
  97. console.log(body.children[0].children[3].attrs.id);
  98. // Parent
  99. // Добавьте каждому объекту тэга из предыдущего задания связь с родителем, используя свойство parent и присвоение
  100. body.children[0].parent = body;
  101. body.children[1].parent = body;
  102. body.children[0].children[0].parent = body.children[0];
  103. body.children[0].children[1].parent = body.children[0];
  104. body.children[0].children[2].parent = body.children[0];
  105. body.children[0].children[2].attrs.parent = body.children[0].children[2];
  106. body.children[0].children[3].parent = body.children[0];
  107. body.children[0].children[3].attrs.parent = body.children[0].children[3];
  108. body.children[1].children[0].parent = body.children[1];
  109. body.children[1].children[0].attrs.parent = body.children[1].children[0];
  110. body.children[1].children[1].parent = body.children[1];
  111. body.children[1].children[1].attrs.parent = body.children[1].children[1];
  112. // Change OK
  113. // Добавьте(или измените) любой введенный пользователем атрибут тэга <button id='ok'> из задания HTML Tree.
  114. // Пользователь также вводит значение этого атрибута.
  115. body.children[1].children[0].attrs.id = prompt('Enter a new value for button ID');
  116. // Destructure
  117. // Используя деструктуризацию структуры из задания HTML Tree, Выведите значения текста в тэге span, Выведите
  118. // значения текста во второй кнопке и Выведите значение атрибута id во втором input.
  119. const {
  120. children: [
  121. {
  122. children: [
  123. {
  124. children: [
  125. spanValue
  126. ]
  127. }, , ,
  128. {
  129. attrs: {
  130. id: secondInputId
  131. }
  132. }
  133. ]
  134. },
  135. {
  136. children: [,
  137. {
  138. children: [
  139. buttonText
  140. ]
  141. }
  142. ]
  143. }
  144. ]
  145. } = body;
  146. console.log(spanValue, buttonText, secondInputId);
  147. }
  148. // Destruct array
  149. // напишите код, который используя деструктуризацию положит:
  150. // четные числа в переменные even1, even2,
  151. // нечетные в odd1, odd2, odd3,
  152. // буквы в отдельный массив
  153. destruct_array: {
  154. let arr = [1, 2, 3, 4, 5, "a", "b", "c"];
  155. const [ood1, even1, odd2, even2, odd3, ...letters] = arr;
  156. console.log(ood1, even1, odd2, even2, odd3, letters);
  157. }
  158. // Destruct string
  159. // напишите код, который используя деструктуризацию положит:
  160. // число в переменную number
  161. // букву a в переменную s1
  162. // букву b в переменную s2
  163. // букву c в переменную s3
  164. destruct_string: {
  165. let arr = [1, "abc"];
  166. const [number, [s1, s2, s3]] = arr;
  167. console.log(number, [s1, s2, s3]);
  168. }
  169. // Destruct 2
  170. // извлеките используя деструктуризацию имена детей в переменные name1 и name2
  171. destruct_2: {
  172. let obj = {
  173. name: 'Ivan',
  174. surname: 'Petrov',
  175. children: [{ name: 'Maria' }, { name: 'Nikolay' }]
  176. }
  177. const {
  178. children: [
  179. {
  180. name: name1
  181. },
  182. {
  183. name: name2
  184. }
  185. ]
  186. } = obj;
  187. console.log(name1, name2);
  188. }
  189. // Destruct 3
  190. // извлеките используя деструктуризацию объектов два первых элемента и длину массива в переменные a, b и length
  191. destruct_3: {
  192. let arr = [1, 2, 3, 4, 5, 6, 7, 10];
  193. const { 0: a, 1: b, length } = arr;
  194. console.log(a, b, length);
  195. }
  196. // Currency real rate
  197. // Ниже приведен код, который скачивает актуальную информацию о курсах валют. Скопируйте ссылку из него
  198. // вставьте в браузер интереса ради. Реализуйте калькулятор обмена валют следующим образом:
  199. // Пользователь вводит исходную валюту
  200. // Пользователь вводит валюту, в которую происходит конвертация
  201. // Пользователь вводит сумму в исходной валюте
  202. // Пользовател видит результат конвертации
  203. // Учтите, что пользователь может ввести какую-то дичь или название валют в неверном регистре
  204. currency_real_rate: {
  205. let startCurrency = prompt('What currency do you have?').toUpperCase();
  206. let endCurrency = prompt('What currency do you want to get?').toUpperCase();
  207. let startAmount = +prompt('What amount do you want to exchange?');
  208. fetch('https://open.er-api.com/v6/latest/USD').then(res => res.json())
  209. .then(data => {
  210. if (!startAmount) {
  211. alert('You entered wrong value');
  212. return;
  213. }
  214. let startCurrencyRate = data.rates[startCurrency];
  215. let endCurrencyRate = data.rates[endCurrency];
  216. if (!startCurrencyRate || !endCurrencyRate) {
  217. alert('Rate is not found');
  218. return;
  219. }
  220. let amountInUsd = startAmount / startCurrencyRate;
  221. let endAmount = (amountInUsd * endCurrencyRate).toFixed(2);
  222. alert('You will get ' + endAmount + endCurrency);
  223. //эта функция запускается когда данные скачиваются.
  224. //остальной код работает РАНЬШЕ.
  225. //только ТУТ есть переменная data со скачанными данными
  226. console.log(data) //изучите структуру, получаемую с сервера в консоли
  227. })
  228. }