script.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. ////Sort
  2. var persons = [
  3. {name: "Иван", age: 17},
  4. {name: "Мария", age: 35},
  5. {name: "Алексей", age: 73},
  6. {name: "Яков", age: 12},
  7. ]
  8. function sort(arr, key, boolean = true) {
  9. let middleArr = [];
  10. for (let i = 0; i < arr.length; i++) {
  11. middleArr.push(arr[i]);
  12. }
  13. for (let j = 0; j < middleArr.length; j++) {
  14. let index = 0
  15. for (let k = 1; k < middleArr.length;) {
  16. if (middleArr[index][key] < middleArr[k][key]) {
  17. [middleArr[index], middleArr[k]] = [middleArr[k], middleArr[index]]
  18. k += 2
  19. index += 1
  20. } else {
  21. k += 1
  22. index += 1
  23. }
  24. }
  25. }
  26. if (boolean == true) {
  27. middleArr.reverse()
  28. }
  29. return middleArr
  30. }
  31. console.log(sort(persons, "age"));
  32. console.log(sort(persons, "name", false))
  33. ///////Array map
  34. let array = ["1", {}, null, undefined, "500", 700]
  35. let newArray = array.map(function (num) {
  36. if (!num === false && !isNaN(+num)) {
  37. return +num
  38. }
  39. return num
  40. })
  41. console.log(newArray)
  42. //Array reduce
  43. let reduceArray = ["0", 5, 3, "string", null]
  44. let result = reduceArray.reduce(function(a, b){
  45. if(typeof a !== "number"){
  46. a = b
  47. return a
  48. } else if
  49. (typeof b !== "number"){
  50. return a
  51. } else {
  52. a = a*b
  53. }
  54. return a
  55. })
  56. console.log(result)
  57. ////Array filter
  58. var phone = {
  59. brand: "meizu",
  60. model: "m2",
  61. ram: 2,
  62. color: "black",
  63. };
  64. function filter(obj, funk) {
  65. let rest = {}
  66. for (let key in obj){
  67. if (funk(key, obj[key])){
  68. rest[key] = obj[key]
  69. }
  70. }
  71. return rest
  72. }
  73. console.log(filter(phone,(key,value) => key == "color" || value == 2));
  74. ///Array map
  75. function map(obj, funk) {
  76. let newObj = {}
  77. for (let key in obj){
  78. let temp = funk(key, obj[key]);
  79. for(let _key in temp) {
  80. newObj[_key] = temp[_key];
  81. }
  82. }
  83. return newObj
  84. }
  85. console.log(map({name: "Иван", age: 17},function(key,value){
  86. var result = {};
  87. result[key+"_"] = value + "$";
  88. return result;
  89. }))
  90. ////Sum
  91. //Не поняла точно задания, потому написала два варианта
  92. function sumRecurs(a, b, c){
  93. a += b;
  94. if(a < c) {
  95. return sumRecurs(a, b, c)
  96. }
  97. return a
  98. }
  99. console.log(sumRecurs(2, 4, 16))
  100. function sumRecurs2 (a, b, c) {
  101. if(c > 0) {
  102. a += b;
  103. c = c - 1
  104. return sumRecurs2(a, b, c)
  105. }
  106. return a
  107. }
  108. console.log(sumRecurs2(2, 4, 5))
  109. //toHtml
  110. ///уже вроде делала
  111. var someTree = {
  112. tagName: "table", //html tag
  113. subTags: [ //вложенные тэги
  114. {
  115. tagName: "tr",
  116. subTags: [
  117. {
  118. tagName: "td",
  119. text: "some text",
  120. },
  121. {
  122. tagName: "td",
  123. text: "some text 2",
  124. }
  125. ]
  126. }
  127. ],
  128. attrs:
  129. {
  130. border: 1,
  131. },
  132. }
  133. function toHtml(obj) {
  134. debugger
  135. var element = document.createElement(obj.tagName);
  136. if (obj.text) {
  137. element.innerHTML = obj.text
  138. }
  139. if (obj.attrs) {
  140. for (let key in obj.attrs) {
  141. element[key] = obj.attrs[key]
  142. }
  143. }
  144. if (obj.subTags) {
  145. for (let i = 0; i < obj.subTags.length; i++) {
  146. element.appendChild(toHtml(obj.subTags[i]));
  147. }
  148. }
  149. return element;
  150. }
  151. //document.body.appendChild(toHtml(someTree));