You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何递归移除数组中的EMPLOYEE对象并添加至新数组?

解决方案

你可以在收集EMPLOYEE对象的同时,从原数组中移除它们。需要注意的是,删除数组元素后要调整遍历索引,避免跳过后续元素。以下是修改后的代码:

const employees = [];

const extractEmployees = (members) => {
  for(let i = 0; i < members.length; i++) {
    const member = members[i];

    if(member.type === 'EMPLOYEE') {
      employees.push(member);
      // 从原数组移除当前EMPLOYEE对象
      members.splice(i, 1);
      // 索引减1,抵消数组长度减少的影响,防止跳过下一个元素
      i--;
    } else if(member.children && member.children.length > 0) {
      // 递归处理MANAGER的子节点数组
      extractEmployees(member.children);
    }
  }
};

extractEmployees(members);

代码说明

  • 遇到EMPLOYEE类型对象时,用splice(i, 1)从原数组中移除该元素,同时将索引i减1,保证遍历不会遗漏后续元素。
  • 仅对MANAGER类型的对象递归处理其children数组,因为EMPLOYEE对象已被移除,且根据你的数据结构,它们的children为空数组,无需额外处理。

执行完成后,employees数组会包含所有被移除的EMPLOYEE对象,原members数组则仅保留MANAGER的层级结构。

内容的提问来源于stack exchange,提问作者Michael Lynch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 18:54:51