Skip to content

Instantly share code, notes, and snippets.

@sshadmand
Last active October 15, 2016 01:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sshadmand/c09bbf7fc5aa6d3b0489d9747659559f to your computer and use it in GitHub Desktop.
Save sshadmand/c09bbf7fc5aa6d3b0489d9747659559f to your computer and use it in GitHub Desktop.
Recursive Filter on Tree Dict (JSON)
outline = [{
id: 1,
children: [{
id: 3,
label: 'goodbye',
children: []
}],
label: 'hello'
},
{
id: 2,
children: [{
id: 9,
label: 'mama',
children: []
}],
label: 'dada'
}];
function searchTree(treeArr, searchId){
var arr = []
for (nodeIndex in treeArr) {
var node = treeArr[nodeIndex];
if (node.id == searchId) {
console.log("Macth. Ignoring", node.id);
} else {
if (node.children.length > 0) {
var newChildren = searchTree(node.children, searchId, node);
node.children = newChildren;
arr.push(node);
} else {
arr.push(node);
return arr;
}
}
}
return arr;
}
a = searchTree(outline, 9)
console.log(a)
// Lazy. Scan entire tree and filter any nodes that match
function deleteNodeFromTree(obj, removeNodeId) {
obj.children = obj.children.filter(item => item.id != removeNodeId);
for (nodeIndex in obj.children) {
deleteNodeFromTree(obj.children[nodeIndex], removeNodeId, parentNodeId);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment