这个npm包名为@handsomewolf/tree-data。它提供了一系列的功能,如基础转换(将树形结构转换为扁平结构,将扁平结构数据转换为树形结构),基础节点操作(修改树节点,插入树节点,删除树节点),基础查询(计算树的深度和广度,获取树路径,搜索树,获取子树)以及基础遍历(过滤树,广度优先遍历,深度优先遍历)等。
- 数据转换
- 将树形结构转换为扁平结构(实例方法)
- 将扁平结构转换为树结构(实例方法)
- 节点操作
- 查询
- 遍历
- 打印
- 控制台查看树结构(静态方法)
npm install @handsomewolf/tree-data
首先,你需要导入 TreeData 类:
import { TreeData } from "@handsomewolf/tree-data";
然后,你可以创建一个 TreeData 对象:
const treeData = new TreeData(trees, options);
TreeData 构造函数接受两个参数:
- trees:一个对象数组,表示树形结构的数据。
- options:一个可选的配置对象,包含以下属性:
- idKey:一个字符串,表示节点对象中表示 id 的属性的键,默认为 "id"。
- parentIdKey:一个字符串,表示节点对象中表示父节点 id 的属性的键,默认为 "parentId"。
- childrenKey:一个字符串,表示节点对象中表示子节点的属性的键,默认为 "children"。
你可以通过修改 options 参数来自定义这些键名。例如:
const options = {
idKey: 'myId',
parentIdKey: 'myParentId',
childrenKey: 'myChildren'
};
const treeData = new TreeData(trees, options);
链式调用
TreeData 类的实例方法支持链式调用,这意味着你可以将多个操作链接在一起。例如:
import { TreeData } from "@handsomewolf/tree-data";
const trees = [
{
id: 1,
children: [{ id: 3 }, { id: 2 }],
},
{
id: 4,
children: [{ id: 6 }, { id: 5 }],
},
];
const treeData = new TreeData(trees);
treeData
.sortNodes((a, b) => a.id - b.id)
.filterTree({ exclude: { id: [3] } });
const result = treeData.getResult();
console.log(result);
// 输出:
// [
// {
// id: 1,
// children: [{ id: 2 }],
// },
// {
// id: 4,
// children: [{ id: 5 }, { id: 6 }],
// },
// ]