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

基于公共键合并二维对象数组并求和basecount的优化方法

优化二维对象数组按campaign_name累加basecount的实现方式

问题描述

原始二维对象数组:

[
  [ 
    { basecount: 343, campaign_name: '1.Stay_Connected_Plus:SP_JCA' },
    { basecount: 342, campaign_name: '1.Stay_Connected_Plus:JP_JCA' }
  ],
  [ 
    { basecount: 102, campaign_name: '1.Stay_Connected_Plus:SP_JCA' },
    { basecount: 102, campaign_name: '1.Stay_Connected_Plus:PP_JCA' }   
  ]
]

期望输出:

[ 
  { basecount: 445, campaign_name: '1.Stay_Connected_Plus:SP_JCA' },
  { basecount: 342, campaign_name: '1.Stay_Connected_Plus:JP_JCA' },
  { basecount: 102, campaign_name: '1.Stay_Connected_Plus:PP_JCA' }     
]

核心需求:当campaign_name相同时,累加对应的basecount;不同则保留原对象。已通过嵌套遍历、匹配campaign_name求和的方式实现,想寻求更高效的优化方案。

优化实现方案

可以利用对象映射+数组扁平化的方式实现,时间复杂度为O(n)(n为所有对象的总数),比嵌套遍历的O(n²)更高效:

const originalArray = [
  [ 
    { basecount: 343, campaign_name: '1.Stay_Connected_Plus:SP_JCA' },
    { basecount: 342, campaign_name: '1.Stay_Connected_Plus:JP_JCA' }
  ],
  [ 
    { basecount: 102, campaign_name: '1.Stay_Connected_Plus:SP_JCA' },
    { basecount: 102, campaign_name: '1.Stay_Connected_Plus:PP_JCA' }   
  ]
];

// 1. 扁平化二维数组为一维
const flatArray = originalArray.flat();

// 2. 用对象做映射,key为campaign_name,value为累加后的对象
const map = {};
flatArray.forEach(item => {
  if (map[item.campaign_name]) {
    map[item.campaign_name].basecount += item.basecount;
  } else {
    map[item.campaign_name] = {...item}; // 浅拷贝原对象,避免修改原始数据
  }
});

// 3. 将映射对象的值转为数组,得到最终结果
const result = Object.values(map);

console.log(result);

方案优势

  • 扁平化数组后只需一次遍历即可完成累加,数据量越大,效率优势越明显;
  • 用campaign_name作为键值,匹配过程是O(1)的哈希查找,避免嵌套遍历中的重复匹配;
  • 浅拷贝原对象,不会修改原始数组的数据,保证数据独立性。

也可以用Array.reduce()简化写法,逻辑和上面一致:

const result = originalArray.flat().reduce((acc, curr) => {
  acc[curr.campaign_name] = acc[curr.campaign_name] 
    ? { ...curr, basecount: acc[curr.campaign_name].basecount + curr.basecount }
    : { ...curr };
  return acc;
}, {});

console.log(Object.values(result));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:15:11