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)
6 回答5.3k 阅读✓ 已解决
9 回答9.5k 阅读
5 回答3.8k 阅读✓ 已解决
3 回答10.6k 阅读✓ 已解决
4 回答8.1k 阅读✓ 已解决
7 回答10.1k 阅读
4 回答7.5k 阅读