javascipt: 多维数组对象扁平化?
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]
请教下大家有好的实现方法吗?
回复
1个回答
test
2024-07-06
function getAllIds(arr) {
const ids = [];
arr.forEach(item => {
ids.push(item.id);
if (item.children) {
ids.push(...getAllIds(item.children));
}
});
return ids;
}
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 ids = getAllIds(arr);
console.log(ids); // [1, 11, 111, 112, 12, 2, 21, 211, 212, 22]
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容