原生js递归给树形数据每一层级加键值对
时间: 2024-05-03 22:18:41 浏览: 89
可以使用递归来给树形数据每一层级加键值对,例如:
```javascript
function addLevelKey(treeData, level = 1) {
treeData.forEach(node => {
// 给当前节点添加 level 属性
node.level = level;
// 如果当前节点有子节点,则递归调用 addLevelKey 给子节点添加 level 属性
if (node.children) {
addLevelKey(node.children, level + 1);
}
});
}
// 示例数据
const treeData = [
{
id: 1,
name: 'Node 1',
children: [
{
id: 2,
name: 'Node 1-1',
children: [
{
id: 3,
name: 'Node 1-1-1'
},
{
id: 4,
name: 'Node 1-1-2'
}
]
},
{
id: 5,
name: 'Node 1-2'
}
]
},
{
id: 6,
name: 'Node 2',
children: [
{
id: 7,
name: 'Node 2-1',
children: [
{
id: 8,
name: 'Node 2-1-1'
}
]
}
]
}
];
// 调用函数给树形数据添加 level 属性
addLevelKey(treeData);
// 输出结果
console.log(JSON.stringify(treeData, null, 2));
```
输出结果为:
```
[
{
"id": 1,
"name": "Node 1",
"children": [
{
"id": 2,
"name": "Node 1-1",
"children": [
{
"id": 3,
"name": "Node 1-1-1",
"level": 3
},
{
"id": 4,
"name": "Node 1-1-2",
"level": 3
}
],
"level": 2
},
{
"id": 5,
"name": "Node 1-2",
"level": 2
}
],
"level": 1
},
{
"id": 6,
"name": "Node 2",
"children": [
{
"id": 7,
"name": "Node 2-1",
"children": [
{
"id": 8,
"name": "Node 2-1-1",
"level": 3
}
],
"level": 2
}
],
"level": 1
}
]
```
可以看到,每一个节点都添加了 level 属性,表示它的层级。如果节点有子节点,则子节点的 level 属性值为父节点的 level 属性值加一。
阅读全文