Operation method collection for tree node(like operation array).
Usage
npm install --save operation-tree-node
Methods
common arguments:
name | type | description |
---|
data | object[] | example: [{ id: 1, name: "1", children: [{ id: 2, name: "2" }] }] |
callback | (node, index, arr, parent) => boolean/object/void | node: tree node, index: parent children's index, arr: parent children, parent: parent node |
props | { id: string, children: string, parent: string } | tree node's 'children', 'parent' and 'id' key name |
examples:
- treeEach(data, callback, props) tree node each
if callback() === false
, skip children.
import { treeEach } from "operation-tree-node";
const treeData1 = [{ id: 1, name: "1", children: [{ id: 2, name: "2" }] }];
treeEach(treeData1, (node, index, arr, parent) => {
console.log(node.name, index, arr, parent);
});
const treeData2 = [{ id: 1, name: "1", child: [{ id: 2, name: "2" }] }];
treeEach(treeData2, console.log, { children: "child" });
- treeMap(data, callback, props) tree node map
import { treeMap } from "operation-tree-node";
const treeData = [{ id: 1, name: "1", children: [{ id: 2, name: "2" }] }];
const newData = treeMap(treeData, node => ({
id: node.id + 1,
name: node.name,
...(node.children ? { children: node.children } : {})
}));
console.log(newData);
- treeFilter(data, callback, props) tree node filter
import { treeFilter } from "operation-tree-node";
const treeData = [
{ id: 1, name: "1", child: [{ id: 2, name: "2" }] },
{ id: 3, name: "3" }
];
const result = treeFilter(treeData, node => node.id === 2, {
children: "child"
});
console.log(result);
- treeToFlatArray(data, callback, props) tree to flat array
import { treeToFlatArray } from "operation-tree-node";
const treeData = [{ id: 1, name: "1", children: [{ id: 2, name: "2" }] }];
const result = treeToFlatArray(treeData);
console.log(result);
- treeMerge(data, callback, props) tree node merge(level)
arguments:
name | type | description |
---|
data | (same) | (same) |
callback | (currentNode, nextNode) => boolean | currentNode/nextNode: tree node, compare with them |
props | (same) | (same) |
import { treeMerge } from "operation-tree-node";
const treeData = [
{ id: 1, name: "1", type: "1", children: [{ id: 2, name: "2" }] },
{ id: 3, name: "3", type: "1", children: [{ id: 4, name: "4" }] }
];
const result = treeMerge(
treeData,
(curr, next) => curr.type && curr.type === next.type
);
console.log(result);
- treeSort(data, callback, props) tree node sort(level)
arguments:
name | type | description |
---|
data | (same) | (same) |
callback | (currentNode, nextNode) => number | currentNode/nextNode: tree node, compare with them |
props | (same) | (same) |
const treeData = [
{
id: 1,
name: "1",
children: [{ id: 3, name: "3" }, { id: 2, name: "2" }]
}
];
const newData = treeSort(
treeData,
(currentNode, nextNode) => currentNode.id - nextNode.id
);
console.log(newData);
- treeEachParent(data, callback, props) tree node each parent
arguments:
name | type | description |
---|
data | (same) | (same) |
callback | (parent) => void/boolean | parent: parent node, if callback false, skip parent.parent |
props | (same) | (same) |
import { treeEachParent } from "operation-tree-node";
const treeData = [
{ id: 1, name: "123", children: [{ id: 2, name: "2", parent: null }] }
];
treeData[0].children[0].parent = treeData[0];
const names = [];
treeEachParent(treeData[0].children, parent => !!names.push(parent.name));
console.log(names);
- treeCheck(data, checkIds, props) tree node check(all associated node)
arguments:
name | type | description |
---|
data | (same) | (same) |
checkIds | number[]/string[] | will checked node ids |
props | (same) | (same) |
import { treeCheck } from "operation-tree-node";
const treeData = [{ id: 1, name: "123", children: [{ id: 2, name: "2" }] }];
const resultIds = treeCheck(treeData, [2], {
id: "id",
children: "children",
parent: "parent"
});
console.log(resultIds);