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

如何按projectIds分组并合并同项目下的children数组?

合并相同projectId的子项实现方案

可以用JavaScript的Array.prototype.reduce()方法快速实现这个分组合并需求,核心逻辑是按projectId分组,相同ID的项合并children数组,具体代码示例如下:

原数据示例

[
  {
    "projectId": "proj1",
    "name": "项目1",
    "children": [{"id": "c1", "name": "子项1"}]
  },
  {
    "projectId": "proj1",
    "name": "项目1",
    "children": [{"id": "c2", "name": "子项2"}]
  },
  {
    "projectId": "proj2",
    "name": "项目2",
    "children": [{"id": "c3", "name": "子项3"}]
  }
]

处理代码

// 替换为你的原始数据
const originalProjects = [/* 原数据内容 */];

// 分组合并逻辑
const mergedProjects = Object.values(
  originalProjects.reduce((groupMap, currentItem) => {
    // 检查当前projectId是否已有分组
    if (!groupMap[currentItem.projectId]) {
      // 首次出现则创建新分组,浅拷贝避免修改原对象
      groupMap[currentItem.projectId] = {
        ...currentItem,
        children: [...currentItem.children]
      };
    } else {
      // 已有分组则合并children数组
      groupMap[currentItem.projectId].children.push(...currentItem.children);
    }
    return groupMap;
  }, {})
);

处理后结果

[
  {
    "projectId": "proj1",
    "name": "项目1",
    "children": [{"id": "c1", "name": "子项1"}, {"id": "c2", "name": "子项2"}]
  },
  {
    "projectId": "proj2",
    "name": "项目2",
    "children": [{"id": "c3", "name": "子项3"}]
  }
]

说明:如果相同projectId的项存在其他字段不一致的情况,可以根据需求调整逻辑,比如保留第一个项的字段,或者对字段做合并处理。

内容的提问来源于stack exchange,提问作者Jing c

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 04:01:08