Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.65 KB | None | 0 0
  1. [
  2. {
  3. "value":"apple",
  4. "children":[
  5. {
  6. "value":"green-apple",
  7. "children":[
  8.  
  9. ]
  10. },
  11. {
  12. "value":"red-apple",
  13. "children":[
  14. {
  15. "value":"asia-red-apple",
  16. "children":[
  17.  
  18. ]
  19. },
  20. {
  21. "value":"europe-red-apple",
  22. "children":[
  23.  
  24. ]
  25. },
  26. {
  27. "value":"africa-red-apple",
  28. "children":[
  29.  
  30. ]
  31. }
  32. ]
  33. }
  34. ]
  35. },
  36. {
  37. "value":"grape",
  38. "children":[
  39. {
  40. "value":"green-grape",
  41. "children":[
  42. {
  43. "value":"asia-europe-green-grape",
  44. "children":[
  45.  
  46. ]
  47. },
  48. {
  49. "value":"asia-africa-green-grape",
  50. "children":[
  51.  
  52. ]
  53. },
  54. {
  55. "value":"africa-europe-green-grape",
  56. "children":[
  57.  
  58. ]
  59. }
  60. ]
  61. },
  62. {
  63. "value":"red-grape",
  64. "children":[
  65. {
  66. "value":"asia-red-grape",
  67. "children":[
  68.  
  69. ]
  70. },
  71. {
  72. "value":"europe-red-grape",
  73. "children":[
  74.  
  75. ]
  76. },
  77. {
  78. "value":"africa-red-grape",
  79. "children":[
  80.  
  81. ]
  82. }
  83. ]
  84. }
  85. ]
  86. }
  87. ]
  88.  
  89. [
  90. {
  91. "value":"apple",
  92. "children":[
  93. {
  94. "value":"green-apple",
  95. "children":[
  96.  
  97. ]
  98. },
  99. {
  100. "value":"red-apple",
  101. "children":[
  102. {
  103. "value":"asia-red-apple",
  104. "children":[
  105.  
  106. ]
  107. },
  108. {
  109. "value":"europe-red-apple",
  110. "children":[
  111.  
  112. ]
  113. },
  114. {
  115. "value":"africa-red-apple",
  116. "children":[
  117.  
  118. ]
  119. }
  120. ]
  121. }
  122. ]
  123. },
  124. {
  125. "value":"grape",
  126. "children":[
  127. {
  128. "value":"green-grape",
  129. "children":[
  130. {
  131. "value":"asia-europe-green-grape",
  132. "children":[
  133.  
  134. ]
  135. },
  136. {
  137. "value":"asia-africa-green-grape",
  138. "children":[
  139.  
  140. ]
  141. },
  142. {
  143. "value":"africa-europe-green-grape",
  144. "children":[
  145.  
  146. ]
  147. }
  148. ]
  149. },
  150. {
  151. "value":"red-grape",
  152. "children":[
  153. {
  154. "value":"asia-red-grape",
  155. "children":[
  156.  
  157. ]
  158. },
  159. {
  160. "value":"europe-red-grape",
  161. "children":[
  162.  
  163. ]
  164. },
  165. {
  166. "value":"africa-red-grape",
  167. "children":[
  168.  
  169. ]
  170. }
  171. ]
  172. }
  173. ]
  174. }
  175. ]
  176.  
  177. function recursiveSearch (coll, str, level) {
  178. if(!level) level = 0;
  179. console.log('level', level, ' coll size before job', coll.length);
  180. let removalValuesForThisLevel = [];
  181. let temp = [].concat(coll);
  182. temp.forEach(mem => {
  183. if(mem.children && mem.children.length > 0) {
  184. // recursive if has child
  185. let subList = recursiveSearch(mem.children, str, level + 1);
  186. mem.children = (subList) ? subList : null;
  187. } else {
  188. if((mem.value || '').indexOf(str) > -1) {
  189. // collect according values
  190. // console.log(mem.value,' is match for string :: ', str);
  191. } else {
  192. // collect removal values
  193. // console.log(mem.value,' is not match for string :: ', str);
  194. removalValuesForThisLevel.push(mem.value);
  195. }
  196. }
  197. });
  198.  
  199. temp = temp.filter(mem => {
  200. return mem.children && (removalValuesForThisLevel.indexOf(mem.value) < 0);
  201. });
  202.  
  203. console.log('level', level, ' coll size AFTER job', temp.length, JSON.stringify(temp))
  204. return (temp.length > 0) ? temp : (level === 0) ? [] : null;
  205. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement