main.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. //то, что мы на занятии делали
  2. fetch('https://raw.githubusercontent.com/russ666/all-countries-and-cities-json/master/countries.json').then(res => res.json())
  3. .then(data => {
  4. for (let key of Object.keys(data)) {
  5. let option = document.createElement('option')
  6. option.value = key;
  7. option.innerText = key;
  8. countrySelect.append(option)
  9. }
  10. countrySelect.onchange = () => {
  11. citySelect.innerHTML = ''
  12. for (let city of data[countrySelect.value]) {
  13. let option = document.createElement('option')
  14. option.value = city;
  15. option.innerText = city;
  16. citySelect.append(option)
  17. }
  18. }
  19. })
  20. //sort
  21. var persons = [
  22. {name: "Иван", age: 17},
  23. {name: "Мария", age: 35},
  24. {name: "Алексей", age: 73},
  25. {name: "Яков", age: 12},
  26. ]
  27. function sort (arr, key, isIncrease) {
  28. if (isIncrease != undefined && isIncrease == false) {
  29. arr.sort((obj, obj2) => obj[key] < obj2[key] ? 1 : -1)
  30. return arr;
  31. }
  32. arr.sort((obj, obj2) => obj[key] > obj2[key] ? 1 : -1)
  33. return arr;
  34. }
  35. sort(persons, "age");
  36. sort(persons, "name", false);
  37. //array map
  38. ["1", {}, null, undefined, "500", 700].map(a => {
  39. if (typeof a === "string") {
  40. a = +a
  41. }
  42. return a;
  43. });
  44. //array reduce
  45. ["0", 5, 3, "string", null].reduce((a, b) => (typeof b === "number") ? a * b : a, 1);
  46. //object filter
  47. var phone = {
  48. brand: "meizu",
  49. model: "m2",
  50. ram: 2,
  51. color: "black",
  52. }
  53. function filter(obj, f) {
  54. for (let [key, value] of Object.entries(obj)) {
  55. if (f(key, value) === false) {
  56. delete obj[key]
  57. }
  58. }
  59. return obj;
  60. };
  61. filter(phone,(key,value) => key == "color" || value == 2);
  62. //object map
  63. function map(obj, f) {
  64. let newObj = {}
  65. for (let [key, value] of Object.entries(obj)) {
  66. newObj = {...newObj, ...f(key, value)}
  67. }
  68. return newObj
  69. };
  70. map({name: "Иван", age: 17},function(key,value){
  71. var result = {};
  72. result[key+"_"] = value + "$";
  73. return result;
  74. });
  75. //Sum
  76. //вариант, где нужно указать, до какого числа считать и шаг
  77. function progressionSum(lastNumber, step = 1) {
  78. if (lastNumber <= 1) {
  79. return 1;
  80. }
  81. let sum = number + progressionSum(lastNumber - step, step)
  82. return sum;
  83. }
  84. //или вариант, где нужно указать, сколько элементов нам нужно сложить, с какого числа начинаем и шаг.. я не шарю в математике я не знаю как правильно простите спасибо
  85. function progressionSum(summandsNumber, firstNumber = 1, step = 1) {
  86. if (summandsNumber < 1) {
  87. return 0;
  88. }
  89. let sum = firstNumber + progressionSum(summandsNumber - 1, firstNumber + step, step)
  90. return sum;
  91. }
  92. //HTML Tree
  93. var someTree = {
  94. tagName: "table", //html tag
  95. children: [ //вложенные тэги
  96. {
  97. tagName: "tr",
  98. children: [
  99. {
  100. tagName: "td",
  101. text: "some text",
  102. },
  103. {
  104. tagName: "td",
  105. text: "some text 2",
  106. }
  107. ]
  108. }
  109. ],
  110. attrs:
  111. {
  112. border: 1,
  113. },
  114. }
  115. function treeConstructor(object) {
  116. let table = `<${object.tagName}`
  117. if("attrs" in object) {
  118. for (let [key, value] of Object.entries(object.attrs)) {
  119. table += ` ${key}="${value}"`
  120. }
  121. }
  122. table += `>`
  123. if ("text" in object) {
  124. table += object.text
  125. }
  126. document.write(table)
  127. if ("children" in object) {
  128. for (let child of object.children) {
  129. treeConstructor(child)
  130. }
  131. }
  132. table = ''
  133. table += `</${object.tagName}>`
  134. document.write(table)
  135. }
  136. treeConstructor(someTree)