main.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. //ES6
  2. //ES6: Таблица умножения
  3. let f;
  4. let str = "<table class='table'>";
  5. str += "<tr class='horizontal-table-head'><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td></tr>";
  6. for(let i = 1; i < 10; i++) {
  7. str += `<tr><td>${i}</td>`; //Использование ${} внутри `` скобочек было добавлено в ES6
  8. for(let j = 1; j < 10; j++) {
  9. f = (i, j) => str += `<td>${i*j}</td>`; //Использование ${} внутри `` скобочек было добавлено в ES6
  10. f(i, j);
  11. }
  12. str += "</tr>";
  13. }
  14. document.write(str);
  15. //ES6: Подсветить ячейку
  16. //ES6: Подсветить строку и столбец,
  17. let table = document.querySelector(".table");
  18. let tr = table.querySelectorAll("tr");
  19. let fillTdBackground = function(evt ,backgroundColor = null) { //Использование параметров по умолчанию
  20. let evtTargetCellIndex = evt.target.cellIndex;
  21. let evtTargetRowIndex = evt.target.parentElement.rowIndex;
  22. if(evt.target.tagName == "TD" && evtTargetRowIndex != 0 && evtTargetCellIndex != 0) {
  23. evt.target.style = `background-color: ${backgroundColor}`; // Использование ${} внутри `` скобочек
  24. tr[0].children[evtTargetCellIndex].style = `background-color: ${backgroundColor}`; // Использование ${} внутри `` скобочек
  25. tr[evtTargetRowIndex].children[0].style = `background-color: ${backgroundColor}`; // Использование ${} внутри `` скобочек
  26. }
  27. };
  28. table.addEventListener("mouseover", function(evt) {
  29. fillTdBackground(evt, "#ff5151")
  30. });
  31. table.addEventListener("mouseout", function(evt) {
  32. fillTdBackground(evt)
  33. });
  34. //ES6: Calc
  35. //ES6: Calc Live
  36. let arrElements = [
  37. document.querySelector(".first-input"),
  38. document.querySelector(".second-input"),
  39. document.querySelector(".select"),
  40. document.querySelector(".result")
  41. ]
  42. let [firstInput, secondInput, select, result] = arrElements; // Диструктуризация
  43. let caltResult = function() {
  44. if(select.value == "+") {
  45. result.value = +firstInput.value + +secondInput.value;
  46. } else if(select.value == "-") {
  47. result.value = +firstInput.value - +secondInput.value
  48. } else if(select.value == "/") {
  49. result.value = +firstInput.value / +secondInput.value;
  50. } else {
  51. result.value = +firstInput.value * +secondInput.value;
  52. }
  53. }
  54. for(let element of arrElements) { // Использование for of
  55. element.addEventListener("input", function(){
  56. caltResult();
  57. });
  58. };
  59. //sort
  60. var persons = [
  61. {name: "Иван", age: 17},
  62. {name: "Мария", age: 35},
  63. {name: "Алексей", age: 73},
  64. {name: "Яков", age: 12},
  65. ]
  66. let mySort = function(arr, key, ascending = true) {
  67. arr.sort(function(a, b) {
  68. if(typeof(a[key]) == "string") {
  69. return ascending ? a[key].length - b[key].length : b[key].length - a[key].length;
  70. } else {
  71. return ascending ? a[key] - b[key] : b[key] - a[key];
  72. }
  73. });
  74. };
  75. //array map
  76. let arr1 = ["1", {}, null, undefined, "500", 700].map(function(item){
  77. if(typeof(item) == "string") {
  78. item = +item;
  79. }
  80. return item
  81. });
  82. //array reduce
  83. let arrayReduce = ["0", 5, 3, "string", null].reduce(function(previousItem, currentItem){
  84. if(typeof(currentItem) == "number") {
  85. previousItem = previousItem * currentItem;
  86. }
  87. return previousItem;
  88. }, 1);
  89. console.log(arrayReduce);
  90. //object filter
  91. var phone = {
  92. brand: "meizu",
  93. model: "m2",
  94. ram: 2,
  95. color: "black",
  96. };
  97. let filter = function(obj, f) {
  98. for(let key in obj) {
  99. if(!f(key, obj[key])) {
  100. delete obj[key];
  101. }
  102. }
  103. };
  104. filter(phone,(key,value) => key == "color" || value == 2);
  105. //object map
  106. let map = function(obj, f) {
  107. let newObj = {};
  108. for(let key in obj) {
  109. Object.assign(newObj, f(key, obj[key]))
  110. }
  111. return newObj;
  112. };
  113. console.log(
  114. map({name: "Иван", age: 17},function(key,value){
  115. var result = {};
  116. result[key+"_"] = value + "$";
  117. return result;
  118. })
  119. )
  120. //Рекурсия
  121. //Sum
  122. let sum = function(x) {
  123. return x == 1 ? 1 : x + sum(x - 1);
  124. }
  125. console.log(sum(10));
  126. //HTML Tree
  127. {
  128. var someTree = {
  129. tagName: "table", //html tag
  130. children: [ //вложенные тэги
  131. {
  132. tagName: "tr",
  133. children: [
  134. {
  135. tagName: "td",
  136. text: "some text",
  137. },
  138. {
  139. tagName: "td",
  140. text: "some text 2",
  141. }
  142. ]
  143. }
  144. ],
  145. attrs:
  146. {
  147. border: 1,
  148. },
  149. }
  150. let str = "";
  151. let drawTreeHTML = function(obj) {
  152. str += `<${obj.tagName}>`;
  153. if("text" in obj) {
  154. str += `${obj.text}`;
  155. }
  156. if("children" in obj) {
  157. for(let child of obj.children) {
  158. drawTreeHTML(child);
  159. }
  160. }
  161. str += `</${obj.tagName}>`;
  162. }
  163. drawTreeHTML(someTree);
  164. document.write(str);
  165. }