script.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. function es6() {
  2. // в прошлом задании я старался использовать es6
  3. // вот новые переделанные функции
  4. function sum3(a = 0, b = 0, c = 0) {
  5. return a + b + c;
  6. } // sum3
  7. function sum(...arr){
  8. return arr.reduce((a, b) => {
  9. return a + b;
  10. });
  11. } // sum
  12. } // ES6
  13. function sort(arr, key='age', boolean=true) {
  14. for (let j = arr.length-1; j > 0; j--) {
  15. for (let i = 0; i < j; i++) {
  16. if (boolean ? arr[i][key] > arr[i + 1][key]: arr[i][key] < arr[i + 1][key]) {
  17. let temp = arr[i];
  18. arr[i] = arr[i + 1];
  19. arr[i + 1] = temp;
  20. }
  21. }
  22. }
  23. return arr;
  24. } // sort
  25. let persons = [
  26. {name: "Иван", age: 17},
  27. {name: "Мария", age: 35},
  28. {name: "Алексей", age: 73},
  29. {name: "Яков", age: 12},
  30. ]; // данные для sort
  31. console.log(sort(persons, "age",true)); // пример вызова sort
  32. function arrayMap(arr) {
  33. return arr.map(item => {
  34. return (typeof item === 'string' ? +item : item) || item;
  35. });
  36. } // array map
  37. console.log(arrayMap(["1", {}, null, undefined, "500", 700])); // пример вызова array map
  38. function arrayReduce(arr) {
  39. return arr.reduce((accum, item) => {
  40. return typeof(item) === "number" ? accum * item : accum * 1;
  41. }, 1);
  42. } // array reduce
  43. console.log(arrayReduce(["0", 5, 3, "string", null])); // пример вызова array reduce
  44. function objectFilter(obj, func) {
  45. let result = {};
  46. for (let key in obj) {
  47. if (func(key, obj[key])) {
  48. result[key] = obj[[key]];
  49. }
  50. }
  51. return result;
  52. } // object filter
  53. let phone = {
  54. brand: "meizu",
  55. model: "m2",
  56. ram: 2,
  57. color: "black",
  58. }; // данные для object filter
  59. console.log(objectFilter(phone,(key, value) => key === "color" || value === 2)); // пример вызова object filter
  60. function map(obj, func){
  61. let result = {};
  62. for (const key in obj) {
  63. result = Object.assign(result, func(key, obj[key]));
  64. }
  65. return result;
  66. } // object map
  67. console.log(map({name: "Иван", age: 17} ,function(key, value){
  68. let result = {};
  69. result[key+"_"] = value + "$";
  70. return result;
  71. })); // пример вызова object map
  72. // Рекурсия
  73. function sums(n) {
  74. return (n === 1) ? n : n * sums(n-1);
  75. } // Sum
  76. console.log(sums(10)); // пример вызова Sum
  77. function htmlTree(someTree, str = '') {
  78. if ('tagName' in someTree) {
  79. if ('attrs' in someTree) {
  80. let artStr = '';
  81. for (const atr in someTree['attrs']) {
  82. artStr += `${atr}: ${someTree['attrs'][atr]};`;
  83. }
  84. str += `<${someTree['tagName']} style=\"${artStr}\">`;
  85. }
  86. else{
  87. str += `<${someTree['tagName']}>`;
  88. }
  89. }
  90. if ('text' in someTree) {
  91. str += `${someTree['text']}`;
  92. }
  93. if ('subTags' in someTree) {
  94. for (let i = 0; i < someTree['subTags'].length; i++) {
  95. str = htmlTree(someTree['subTags'][i], str);
  96. }
  97. }
  98. str += `</${someTree['tagName']}>`;
  99. return str;
  100. } // HTML Tree
  101. let someTree = {
  102. tagName: "table", //html tag
  103. subTags: [ //вложенные тэги
  104. {
  105. tagName: "tr",
  106. subTags: [
  107. {
  108. tagName: "td",
  109. text: "some text",
  110. },
  111. {
  112. tagName: "td",
  113. text: "some text 2",
  114. }
  115. ]
  116. }
  117. ],
  118. attrs:
  119. {
  120. border: 1,
  121. margin: 10,
  122. padding: 1,
  123. },
  124. } // тестовые данные для задания на синий пояс
  125. console.log(htmlTree(someTree)); // вызов задания на синий пояс