index.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. let persons = [
  2. {name: "Иван", age: 17},
  3. {name: "Мария", age: 35},
  4. {name: "Алексей", age: 73},
  5. {name: "Яков", age: 12},
  6. ]
  7. // console.log(sort(persons, 'age', false))
  8. function sort(array, field, increase = true) {
  9. let arr = []
  10. let personsUpdate = []
  11. for (let i = 0; i < array.length; i++) {
  12. arr.push(array[i][field])
  13. }
  14. if (field === 'name') {
  15. arr.sort()
  16. } else if (field === 'age') {
  17. arr.sort(compareNumeric)
  18. function compareNumeric(a, b) {
  19. if (a > b) return 1;
  20. if (a == b) return 0;
  21. if (a < b) return -1;
  22. }
  23. }
  24. // console.log(arr)
  25. for (let i = 0; i < arr.length; i++) {
  26. for (let j = 0; j < array.length; j++) {
  27. if (arr[i] && arr[i] === array[j][field]) {
  28. personsUpdate.push(array[j])
  29. }
  30. }
  31. }
  32. if (!personsUpdate[0]) {
  33. personsUpdate = array
  34. }
  35. if (increase) {
  36. return personsUpdate
  37. } else {
  38. return personsUpdate.reverse()
  39. }
  40. }
  41. let data = ["1", {}, null, undefined, "500", 700]
  42. // console.log(arrayMap(data))
  43. function arrayMap(array) {
  44. return array.map(item => {if (typeof(item) === 'string') {
  45. return Number(item)
  46. } else {
  47. return item
  48. }})
  49. }
  50. let data2 = ["0", 5, 3, "string", null, 100n]
  51. // console.log(arrayReduce(data2))
  52. function arrayReduce(array) {
  53. let newArr = array.filter(item => typeof(item) === 'number')
  54. return newArr.reduce((sum, item) => sum + item, 0)
  55. }
  56. let phone = {
  57. brand: "meizu",
  58. model: "m2",
  59. ram: 2,
  60. color: "black",
  61. }
  62. // objectFilter(phone, (key, value) => key == "color" || value == 2)
  63. function objectFilter(object, func) {
  64. let result = {}
  65. for (const [key, value] of Object.entries(object)) {
  66. if (func(key, value)) {
  67. result[key] = value
  68. }
  69. }
  70. console.log(result)
  71. return result
  72. }
  73. // objectMap({name: "Иван", age: 17}, function(key, value) {
  74. // let result = {};
  75. // result[key+"_"] = value + "$";
  76. // return result;
  77. // })
  78. function objectMap(object, func) {
  79. let result = {}
  80. for (const [key, value] of Object.entries(object)) {
  81. result = {...result, ...func(key, value)}
  82. // Object.assign(result, func(key, value))
  83. }
  84. console.log(result)
  85. return result
  86. }
  87. // console.log(sumRec(4, 2, 3))
  88. function sumRec(length, a1, d) {
  89. if (length < 1) {
  90. return 0
  91. } else if (length === 1) {
  92. return a1
  93. } else {
  94. return a1 + sumRec((length - 1), a1 + d, d)
  95. }
  96. }
  97. htmlTreeRecWrapp()
  98. function htmlTreeRecWrapp() {
  99. let body = {
  100. tagName: 'body',
  101. attrs: {},
  102. children: [
  103. { tagName: 'div',
  104. attrs: {},
  105. children: [
  106. { tagName: 'span',
  107. attrs: {},
  108. children: 'Enter a data please'
  109. },
  110. { tagName: 'br',
  111. attrs: {}
  112. },
  113. { tagName: 'input',
  114. attrs: {
  115. type: 'text',
  116. id: 'name'
  117. }
  118. },
  119. { tagName: 'input',
  120. attrs: {
  121. type: 'text',
  122. id: 'surname'
  123. }
  124. }
  125. ]
  126. },
  127. { tagName: 'div',
  128. attrs: {},
  129. children: [
  130. { tagName: 'button',
  131. attrs: {
  132. id: 'ok'
  133. },
  134. children: 'OK'
  135. },
  136. { tagName: 'button',
  137. attrs: {
  138. id: 'cansel'
  139. },
  140. children: 'Cancel'
  141. }
  142. ]
  143. }
  144. ]
  145. }
  146. let str = ''
  147. htmlTreeRec(body, 0)
  148. function htmlTreeRec(object, level = 0) {
  149. str += `<${object.tagName}`
  150. if (object.attrs) {
  151. for (let [key, value] of Object.entries(object.attrs)) {
  152. str += ` ${key}="${value}"`
  153. }
  154. }
  155. if (object.children) {
  156. str += `>`
  157. if (typeof object.children === 'object') {
  158. for (let child of object.children) {
  159. htmlTreeRec(child, level + 1)
  160. }
  161. } else {
  162. str += `${object.children}`
  163. }
  164. str += `</${object.tagName}>`
  165. } else {
  166. str += `/>`
  167. }
  168. }
  169. console.log(str)
  170. document.write(str)
  171. }