js.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451
  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. }
  139. {
  140. let form = {
  141. tagName : 'form',
  142. children : form.children,
  143. }
  144. } */
  145. // 6. Change OK +
  146. // Добавьте(или измените) любой введенный пользователем атрибут тэга <button id='ok'> из задания HTML Tree.
  147. // Пользователь также вводит значение этого атрибута
  148. /*{
  149. let form = {
  150. tagName : 'form',
  151. children : [
  152. {
  153. tagName: 'div',
  154. children: [
  155. {
  156. tagName: "span",
  157. children: ["Enter a data please:"],
  158. },
  159. {
  160. tagName: 'input',
  161. attrs: {
  162. type: 'text',
  163. id: 'name',
  164. },
  165. },
  166. {
  167. tagName: 'input',
  168. attrs: {
  169. type: 'text',
  170. id: 'surname'
  171. }
  172. }
  173. ],
  174. },
  175. {
  176. tagName: 'div',
  177. children: [
  178. {
  179. tagName: 'button',
  180. attrs: {
  181. id: 'ok'
  182. },
  183. children: ["OK"]
  184. },
  185. {
  186. tagName: 'button',
  187. attrs: {
  188. type: 'text',
  189. id: 'cancel'
  190. },
  191. children: ["Cancel"]
  192. }
  193. ]
  194. }
  195. ]
  196. }
  197. form.children[1].children[0].attrs['maxLength'] = prompt('Введите значение maxLength');
  198. console.log(form.children[1].children[0].attrs)
  199. }*/
  200. //7. Destructure +
  201. // Используя деструктуризацию структуры из задания HTML Tree, Выведите значения текста в тэге span,
  202. // Выведите значения текста во второй кнопке и Выведите значение атрибута id во втором input.
  203. /*{
  204. let form = {
  205. tagName : 'form',
  206. children : [
  207. {
  208. tagName: 'div',
  209. children: [
  210. {
  211. tagName: "span",
  212. children: ["Enter a data please:"],
  213. },
  214. {
  215. tagName: 'input',
  216. attrs: {
  217. type: 'text',
  218. id: 'name',
  219. },
  220. },
  221. {
  222. tagName: 'input',
  223. attrs: {
  224. type: 'text',
  225. id: 'surname'
  226. }
  227. }
  228. ],
  229. },
  230. {
  231. tagName: 'div',
  232. children: [
  233. {
  234. tagName: 'button',
  235. attrs: {
  236. id: 'ok'
  237. },
  238. children: ["OK"]
  239. },
  240. {
  241. tagName: 'button',
  242. attrs: {
  243. type: 'text',
  244. id: 'cancel'
  245. },
  246. children: ["Cancel"]
  247. }
  248. ]
  249. }
  250. ]
  251. }
  252. const textSpan = form.children[0].children[0].children;
  253. console.log(textSpan);
  254. const textButton = form.children[1].children[1].children;
  255. console.log(textButton);
  256. const id = form.children[0].children[2].attrs.id;
  257. console.log(id)
  258. } */
  259. // 8. Destruct array +
  260. // напишите код, который используя деструктуризацию положит:
  261. // четные числа в переменные even1, even2; нечетные в odd1, odd2, odd3; буквы в отдельный массив
  262. /*{
  263. let arr = [1,2,3,4,5,"a","b","c"];
  264. [odd1, even1, odd2, even2, odd3, ...letters] = arr;
  265. } */
  266. // 9. Destruct string +
  267. //// напишите код, который используя деструктуризацию положит: число в переменную number; букву a в переменную s1;
  268. // букву b в переменную s2; букву c в переменную s3
  269. /*{
  270. let arr = [1, "abc"];
  271. [number, [s1, s2, s3]] = arr;
  272. } */
  273. //10. Destruct 2 +
  274. //извлеките используя деструктуризацию имена детей в переменные name1 и name2
  275. /*{
  276. let obj = { name: 'Ivan',
  277. surname: 'Petrov',
  278. children: [
  279. {name: 'Maria'},
  280. {name: 'Nikolay'}]};
  281. const [name1,name2] = obj.children;
  282. console.log(name1, name2)
  283. } */
  284. // 11. Destruct 3 +
  285. // извлеките используя деструктуризацию объектов два первых элемента и длину массива в переменные a, b и length
  286. /*{
  287. const arr = [1,2,3,4,5,6,7,10];
  288. const {0:a, 1:b, length} = arr;
  289. }*/
  290. // 12. Copy delete +
  291. // Сделайте копию одного из объектов из задания Literals без ключа, который введет пользователь.
  292. /*{
  293. const dog = {
  294. name: "leo",
  295. color: "orange",
  296. breed: "spitz",
  297. }
  298. const dog2 = {...dog};
  299. dog2[prompt('Добавьте одно из свойств собаки')] = prompt('Введите значение');
  300. console.log(dog2)
  301. } */
  302. // 13.Currency real rate +
  303. // Ниже приведен код, который скачивает актуальную информацию о курсах валют. Скопируйте ссылку из него вставьте в
  304. // браузер интереса ради. Реализуйте калькулятор обмена валют следующим образом:
  305. /*{
  306. let sum = prompt("Введите сумму в исходной валюте")
  307. fetch('https://open.er-api.com/v6/latest/USD').then(res => res.json())
  308. .then(data => {
  309. const {[prompt("Введите исходную валюту").toUpperCase()]:baseCurrency} = data.rates;
  310. const {[prompt("Введите валюту в которую просходит конверция").toUpperCase()]:quoteCurrency} = data.rates;
  311. let result = baseCurrency/quoteCurrency*sum;
  312. console.log(result)
  313. })
  314. }
  315. */
  316. // 14. Currency drop down +
  317. // Сделайте выпадающий список с названиями всех валют, используя код из прошлого задания и накопление HTML-тэгов
  318. // в строковой переменной. Для выпадающих списков в HTML предусмотрены тэги <select> и <option>
  319. /* { fetch('https://open.er-api.com/v6/latest/USD').then(res => res.json())
  320. .then(data => {
  321. console.log(data);
  322. let rates = Object.keys(data.rates);
  323. console.log(rates);
  324. let str = "<select>";
  325. for (let currency of rates){
  326. str += "<option>"+ currency + "</option>";
  327. }
  328. str += "</select>"
  329. document.write(str);
  330. })
  331. } */
  332. // 15. Currency table +-
  333. // Сделайте двумерную таблицу с курсами между всеми возможными парами валют по типу таблицы Пифагора, используя
  334. // заготовку из задания Currency real rate:
  335. /* fetch('https://open.er-api.com/v6/latest/USD').then(res => res.json())
  336. .then(data => {
  337. //console.log(data);
  338. const rates = Object.keys(data.rates);
  339. const values = Object.values(data.rates);
  340. console.log(rates);
  341. console.log(values);
  342. document.write('<table border=1, cellpadding=0, cellspacing=0, width="100%">');
  343. for (let i = 0; i < values.length; i++) {
  344. document.write("<tr>" + values[i].toFixed(3) + "</tr>");
  345. for (let k = 0; k < values.length; k++) {
  346. document.write("<td>" + (values[i]/values[k]).toFixed(3) + "</td>");
  347. }
  348. document.write("</tr>");
  349. }
  350. document.write('</table>');
  351. })
  352. */
  353. //16. Form +
  354. // Напишите код, который их любого объекта создает форму HTML. Например для такого объекта
  355. /*{
  356. const car = {
  357. "Name":"chevrolet chevelle malibu",
  358. "Cylinders":8,
  359. "Displacement":307,
  360. "Horsepower":130,
  361. "Weight_in_lbs":3504,
  362. "Origin":"USA",
  363. "in_production": false
  364. }
  365. for (const [key, values] of Object.entries(car)) {
  366. console.log(key, values)
  367. let str = "<form>";
  368. if (typeof values === 'string') {
  369. str += "<label>" + key + "<input type='text' value='" + values + "'/>" + "</label>";
  370. } else if (typeof values === 'number') {
  371. str += "<label>" + key + "<input type='number' value='" + values + "'/>" + "</label>";
  372. } else if (typeof values === 'boolean') {
  373. str += "<label>" + key + "<input type='checkbox' value='" + values + "'/>" + "</label>";
  374. }
  375. str += "</form>"
  376. document.write(str);
  377. }
  378. } */
  379. //17. Table в конспекте
  380. // Даден любой массив с объектами
  381. const persons = [
  382. {
  383. name: 'Мария',
  384. fatherName: 'Ивановна',
  385. surname: 'Иванова',
  386. sex: 'female'
  387. },
  388. {
  389. name: 'Николай',
  390. fatherName: 'Иванович',
  391. surname: 'Иванов',
  392. age: 15
  393. },
  394. {
  395. name: 'Петр',
  396. fatherName: 'Иванович',
  397. surname: 'Иванов',
  398. married: true
  399. },
  400. ]
  401. const joinObj = {
  402. ...persons[0],
  403. ...persons[1],
  404. ...persons[2]
  405. }
  406. {
  407. const keyS = Object.keys(joinObj);
  408. const lineArr = Object.values(joinObj);
  409. let str = "<table width='80%' border='1' bgcolor='#add8e6'>"
  410. for (let name of keyS) {
  411. str +="<th>"+ name +"</th>";
  412. }
  413. for (let line of lineArr) {
  414. str += "<tr>"+ line +"</tr>";
  415. }
  416. str+= "</table>";
  417. document.write(str)
  418. }