Tree.io
JS Tree shim for browser or nodejs enhance
Usage
Install
npm install tree.io --save
Import
;let nestedTree = name: 'root' children: name: 'childA' children: name: 'childB' children: let tree = nestedTree;
or init Tree with options:
//Tree.io use "children" key to visit tree//and "name" key to visit the tree node idlet tree = nestedTree childrenPropName: 'children' identification: 'name'
may be it's a normalize tree:
let flagTree = root: name: 'root' children: 'childA' 'childB' childA: name: 'childA' children: childB: name: 'childB' children: //Tree.io will detect nestedTree or flagTree//by visiting the "children" key of itlet tree = flagTree;
Attenation: There must be a 'root' tree node in the tree data passed to Tree.io.
API
Tree.io export serval simple methods just fit your need.
#getTree
return tree object data
//return normalize/flag tree by defaulttree //return nested treetree
#traversal(processor, order)
traversal the hold tree, order can be preOrder
(default) and inOrder
, visit wiki for more detail.
//may be you want to print the children of tree
tree.traversal((tree, node) => {
console.log(node.name);
}, 'inOrder');
#removeNode(id)
remove a tree node by identification specified to construcotr,
you may have more operation of node by #filter
method specified below
tree.removeNode('1.1');
#updateNode(obj)
update tree node, obj must contain the identification of the node being update.
tree.updateNode({
name: '1.1',
age: 23
})
#insertAfter(node, id)
insert a tree node after the node of spec id
tree.insertAfter({
name: '1.3',
children: []
}, '1.2');
#insertBefore(node, id)
the same as above;
#filter(fn)
like the Array.filter but with more power
#keyWordFilter(key, keyWord)
In common use implement of #filter
, filter keyWord
by spec word
in tree node.
implement:
{ this}
usage:
tree;
License
MIT