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

如何将数组中同category_name对象合并并归集ID数组

合并数组中相同分类的ID集合

给定如下结构的数组:

const originalArray = [
   {category_name: "category_1", id: [1]},
   {category_name: "category_2", id: [1]},
   {category_name: "category_1", id: [2]},
   {category_name: "category_3", id: [2]},
   {category_name: "category_2", id: [3]},
   {category_name: "category_2", id: [4]},
   {category_name: "category_3", id: [4]},
   {category_name: "category_2", id: [5]},
   {category_name: "category_3", id: [5]},
   {category_name: "category_3", id: [6]},
];

需要将相同category_name的项合并,把对应的id归集到同一个数组中,得到如下结果:

[
   {category_name: "category_1", id: [1,2]},
   {category_name: "category_2", id: [1,3,4,5]},
   {category_name: "category_3", id: [2,4,5,6]},
]

可以用JavaScript的reduce方法实现这个需求,核心是用临时对象缓存分类信息,遍历更新后转成数组即可:

const mergedArray = Object.values(
  originalArray.reduce((acc, item) => {
    // 初始化未存在的分类项
    if (!acc[item.category_name]) {
      acc[item.category_name] = {
        category_name: item.category_name,
        id: []
      };
    }
    // 合并当前项的ID到对应分类的数组
    acc[item.category_name].id.push(...item.id);
    return acc;
  }, {})
);

console.log(mergedArray);

补充处理重复ID

如果原始数据中同一分类下存在重复ID,可以用Set去重,修改合并逻辑:

acc[item.category_name].id = [...new Set([...acc[item.category_name].id, ...item.id])];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:42:25