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

如何将含重复键的JSON对象数组合并为按唯一键分组的数组

按对象键分组JSON数组的实现方案

你推测用reduce函数的思路完全正确,下面是具体实现代码:

const originalArray = [ 
    {
      star: { apples: [ [Object], [Object] ] },
      circle: { apples: [ [Object] ] }
    },
    {
      star: { oranges: [ [Object], [Object] ] },
      circle: { oranges: [ [Object] ] }
    },
    { star: { bananas: [ [Object], [Object] ] } }
];

const groupedArray = Object.values(originalArray.reduce((acc, item) => {
  // 遍历当前对象的所有键值对
  Object.entries(item).forEach(([key, value]) => {
    // 初始化分组(如果不存在)
    if (!acc[key]) {
      acc[key] = { symbol: key, data: [] };
    }
    // 将当前值加入对应分组的data数组
    acc[key].data.push(value);
  });
  return acc;
}, {}));

console.log(groupedArray);

代码说明:

  • 以空对象作为reduce的初始累加器,用来临时存储每个键的分组数据
  • 用Object.entries遍历数组中每个对象的键值对,拆分出键(如star)和对应的数据值
  • 若累加器中无当前键的分组,则创建包含symbol字段和空data数组的分组对象
  • 将当前键对应的数据值推入该分组的data数组
  • 最后通过Object.values将累加器中的分组对象转为数组,得到目标格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 18:25:27