Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [
- {
- "value":"apple",
- "children":[
- {
- "value":"green-apple",
- "children":[
- ]
- },
- {
- "value":"red-apple",
- "children":[
- {
- "value":"asia-red-apple",
- "children":[
- ]
- },
- {
- "value":"europe-red-apple",
- "children":[
- ]
- },
- {
- "value":"africa-red-apple",
- "children":[
- ]
- }
- ]
- }
- ]
- },
- {
- "value":"grape",
- "children":[
- {
- "value":"green-grape",
- "children":[
- {
- "value":"asia-europe-green-grape",
- "children":[
- ]
- },
- {
- "value":"asia-africa-green-grape",
- "children":[
- ]
- },
- {
- "value":"africa-europe-green-grape",
- "children":[
- ]
- }
- ]
- },
- {
- "value":"red-grape",
- "children":[
- {
- "value":"asia-red-grape",
- "children":[
- ]
- },
- {
- "value":"europe-red-grape",
- "children":[
- ]
- },
- {
- "value":"africa-red-grape",
- "children":[
- ]
- }
- ]
- }
- ]
- }
- ]
- [
- {
- "value":"apple",
- "children":[
- {
- "value":"green-apple",
- "children":[
- ]
- },
- {
- "value":"red-apple",
- "children":[
- {
- "value":"asia-red-apple",
- "children":[
- ]
- },
- {
- "value":"europe-red-apple",
- "children":[
- ]
- },
- {
- "value":"africa-red-apple",
- "children":[
- ]
- }
- ]
- }
- ]
- },
- {
- "value":"grape",
- "children":[
- {
- "value":"green-grape",
- "children":[
- {
- "value":"asia-europe-green-grape",
- "children":[
- ]
- },
- {
- "value":"asia-africa-green-grape",
- "children":[
- ]
- },
- {
- "value":"africa-europe-green-grape",
- "children":[
- ]
- }
- ]
- },
- {
- "value":"red-grape",
- "children":[
- {
- "value":"asia-red-grape",
- "children":[
- ]
- },
- {
- "value":"europe-red-grape",
- "children":[
- ]
- },
- {
- "value":"africa-red-grape",
- "children":[
- ]
- }
- ]
- }
- ]
- }
- ]
- function recursiveSearch (coll, str, level) {
- if(!level) level = 0;
- console.log('level', level, ' coll size before job', coll.length);
- let removalValuesForThisLevel = [];
- let temp = [].concat(coll);
- temp.forEach(mem => {
- if(mem.children && mem.children.length > 0) {
- // recursive if has child
- let subList = recursiveSearch(mem.children, str, level + 1);
- mem.children = (subList) ? subList : null;
- } else {
- if((mem.value || '').indexOf(str) > -1) {
- // collect according values
- // console.log(mem.value,' is match for string :: ', str);
- } else {
- // collect removal values
- // console.log(mem.value,' is not match for string :: ', str);
- removalValuesForThisLevel.push(mem.value);
- }
- }
- });
- temp = temp.filter(mem => {
- return mem.children && (removalValuesForThisLevel.indexOf(mem.value) < 0);
- });
- console.log('level', level, ' coll size AFTER job', temp.length, JSON.stringify(temp))
- return (temp.length > 0) ? temp : (level === 0) ? [] : null;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement