const arr = [{ id: 1, children: [{ id: 11, children: [{ id: 111 }, { id: 112 }] }, { id: 12 }] },
{ id: 2, children: [{ id: 21, children: [{ id: 211 }, { id: 212 }] }, { id: 22 }] }];
希望得到所有的id集合:[1,11,111,112,22,2,21,211,212,22]
请教下大家有好的实现方法吗?
const arr = [{ id: 1, children: [{ id: 11, children: [{ id: 111 }, { id: 112 }] }, { id: 12 }] },
{ id: 2, children: [{ id: 21, children: [{ id: 211 }, { id: 212 }] }, { id: 22 }] }];
希望得到所有的id集合:[1,11,111,112,22,2,21,211,212,22]
请教下大家有好的实现方法吗?
经典的多叉树遍历
所以多刷算法还是有用的
const arr = [{ id: 1, children: [{ id: 11, children: [{ id: 111 }, { id: 112 }] }, { id: 12 }] },
{ id: 2, children: [{ id: 21, children: [{ id: 211 }, { id: 212 }] }, { id: 22 }] }];
const root={
id:'root',
children:arr
}
let result = [];
function traverseTree(node) {
if (!node) {
return;
}
if(node.id!=='root')
result.push(node.id)
if (node.children && node.children.length > 0) {
node.children.map(item => this.traverseTree(item))
}
return result
}
traverseTree(root)
console.log(result) //[1, 11, 111, 112, 12, 2, 21, 211, 212, 22]
入参做出参
let treeToArr=(arr,res)=>{
arr.forEach(item=>{
res.push(item.id);
treeToArr(item.children||[], res);
})
}
let ids=[];
treeToArr(arr,ids);
console.log(ids)
8 回答4.6k 阅读✓ 已解决
6 回答3.3k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决