js判断一个树结构是否是一个数组树结构中的一个分支,是的话合并进去,不是就push到数组树结构中
时间: 2024-02-11 09:06:26 浏览: 56
js 实现 tree结构
可以使用递归的方式来实现:
```javascript
function pushToTree(arr, item) {
// 遍历数组
for (let i = 0; i < arr.length; i++) {
const current = arr[i];
// 如果当前项是一个对象,且对象中有children属性,说明当前项是一个树节点
if (typeof current === 'object' && Array.isArray(current.children)) {
// 如果当前项的id和要添加的项的id相同,说明需要合并
if (current.id === item.id) {
// 将要添加的项合并到当前项的children数组中
current.children.push(...item.children);
return;
} else {
// 如果不相同,继续递归查找
pushToTree(current.children, item);
}
}
}
// 如果数组中没有找到与要添加的项相同id的树节点,说明要添加的项是一个独立的分支,直接push到数组中
arr.push(item);
}
```
使用例子:
```javascript
const tree = [
{
id: 1,
children: [
{id: 2, children: []},
{id: 3, children: []}
]
},
{
id: 4,
children: []
}
];
// 要添加的项
const item = {
id: 2,
children: [
{id: 5, children: []},
{id: 6, children: []}
]
};
pushToTree(tree, item);
console.log(tree);
```
输出结果:
```javascript
[
{
id: 1,
children: [
{
id: 2,
children: [
{id: 5, children: []},
{id: 6, children: []}
]
},
{id: 3, children: []}
]
},
{
id: 4,
children: []
}
]
```
可以看到,要添加的项已经合并到了树结构中。
阅读全文