buildTree
树形结构构建函数(支持 level / parentId 双模式)
引入版本
0.30.0
Demo
ts
import { buildTree } from '@wyfex/iutils'
/**
* ================== level 模式 默认 ==================
*/
const data1 = [
{ level: 0, name: '顶部' },
{ level: 1, name: '子项' },
{ level: 2, name: '孙项' }
]
console.log(JSON.stringify(buildTree(data1), null, 2))
// [
// {
// "level": 0,
// "name": "顶部",
// "children": [
// {
// "level": 1,
// "name": "子项",
// "children": [
// {
// "level": 2,
// "name": "孙项"
// }
// ]
// }
// ]
// }
// ]
/**
* ================== parentId 模式 ==================
*/
const data2 = [
{ id: 1, parentId: 0 },
{ id: 2, parentId: 1 }
]
console.log(JSON.stringify(buildTree(data2, { mode: 'parentId' }), null, 2))
// [
// {
// "id": 1,
// "parentId": 0,
// "children": [
// {
// "id": 2,
// "parentId": 1
// }
// ]
// }
// ]
/**
* ================== parentId 模式 + 自定义主键(uid + pid) ==================
*/
const data3 = [
{ uid: 2, pid: 1, name: '子节点A' },
{ uid: 1, pid: 0, name: '父节点1' },
{ uid: 3, pid: 1, name: '子节点B' },
{ uid: 4, pid: 0, name: '父节点2' }
]
console.log(
JSON.stringify(
buildTree(data3, { mode: 'parentId', idKey: 'uid', parentIdKey: 'pid' }),
null,
2
)
)
// [
// {
// "uid": 1,
// "pid": 0,
// "name": "父节点1",
// "children": [
// {
// "uid": 2,
// "pid": 1,
// "name": "子节点A"
// },
// {
// "uid": 3,
// "pid": 1,
// "name": "子节点B"
// }
// ]
// },
// {
// "uid": 4,
// "pid": 0,
// "name": "父节点2"
// }
// ]