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

如何用JavaScript合并对象数组中的重复元素?请求技术帮助

解决数组按公司分组并整理型号数据的问题

没问题,我来帮你实现这个数组分组的需求!我们可以用JavaScript的reduce方法来高效完成这个聚合操作,下面是具体的实现代码和步骤解释:

完整实现代码

const myArr = [
  { "Company": "Samsung", "model": "Galaxy S2", "screen_size": "5.5" },
  { "Company": "Samsung", "model": "Galaxy S3", "screen_size": "5.5" },
  { "Company": "Samsung", "model": "Galaxy S4", "screen_size": "5.5" },
  { "Company": "Xiaomi", "model": "Redmi 2", "screen_size": "4.7" },
  { "Company": "Xiaomi", "model": "Redmi 4", "screen_size": "5" },
  { "Company": "Xiaomi", "model": "Redmi Note 4", "screen_size": "5.5" }
];

const groupedResult = Object.values(myArr.reduce((acc, item) => {
  // 检查当前公司是否已经在累加器中存在
  if (!acc[item.Company]) {
    acc[item.Company] = {
      Company: item.Company,
      models: []
    };
  }
  // 按照你需要的格式创建单个型号的对象
  const modelEntry = {
    [item.model]: { screen_size: item.screen_size }
  };
  // 将型号对象添加到对应公司的models数组中
  acc[item.Company].models.push(modelEntry);
  return acc;
}, {}));

console.log(groupedResult);

代码步骤解释

  1. 使用reduce做分组:reduce是处理数组聚合的绝佳工具,这里我们用它遍历原始数组,把相同公司的数据聚合到一起。acc是我们的累加器对象,用来临时存储分组后的结果,初始值是空对象{}。
  2. 创建公司条目:如果当前遍历到的公司不在累加器中,我们就创建一个新的条目,包含公司名称和一个空的models数组。
  3. 构建型号对象:利用JavaScript的计算属性名([item.model]),动态把型号名称作为对象的键,对应的值是包含screen_size的对象,这刚好匹配你想要的格式。
  4. 转换为最终数组:最后用Object.values()把累加器这个对象转换成数组,因为我们需要的结果是数组格式,而不是以公司名为键的对象。

运行这段代码后,你就能得到完全符合预期的结果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:08:11