javascipt: 多维数组对象扁平化?

作者站长头像
站长
· 阅读数 7
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个回答
avatar
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]
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容