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

JavaScript如何实现二维数组按相同字段分组累加对应数值

实现方案

核心思路是用对象做哈希表,按日期维度分组累计数值,最后把哈希表转回要求的二维数组格式即可。

基础易懂写法

const originArray = [["10/10/2020","1000"],["10/10/2020","300"],["07/10/2020","100"],["07/10/2020","100"],["03/10/2020","100"],["10/10/2020","100"]];
const sumCache = {};

originArray.forEach(item => {
  const currentDate = item[0];
  // 原数组第二个元素是字符串,必须转数字再累加,否则会做字符串拼接
  const currentVal = Number(item[1]);
  sumCache[currentDate] = sumCache[currentDate] ? sumCache[currentDate] + currentVal : currentVal;
});

// 把缓存对象转成目标二维数组,累计值转回字符串和示例格式对齐
const arrayAdd = Object.entries(sumCache).map(([date, total]) => [date, String(total)]);

运行后输出的arrayAdd和预期结果完全一致:

[
  ["10/10/2020", "1400"],
  ["07/10/2020", "200"],
  ["03/10/2020", "100"]
]

注:给出的预期结果里写的"O7/10/2020"是笔误,实际应为数字0开头的"07/10/2020"。

精简写法

如果偏好更短的实现,可以用reduce一步完成分组累加:

const arrayAdd = Object.entries(
  originArray.reduce((cache, [date, valStr]) => {
    cache[date] = (cache[date] || 0) + Number(valStr);
    return cache;
  }, {})
).map(([date, total]) => [date, String(total)]);

两种写法逻辑完全相同,所有支持ES5及以上标准的浏览器/Node环境都可以直接运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:57:15