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

如何基于子数组首个日期元素合并JavaScript多维数组

实现方案

最优方案是使用哈希结构做分组,仅需单次遍历原数组即可完成合并,时间复杂度为O(n),是性能最高的实现方式,不管原数组体量多大都适用。

推荐实现(Map版本,兼容现代JS环境)

const result = Array.from(arr.reduce((map, [date, value]) => {
  if (!map.has(date)) map.set(date, [date])
  map.get(date).push(value)
  return map
}, new Map()).values())

逻辑说明:

  • 以日期字符串为Map的键,对应的值就是最终要输出的合并后子数组
  • 遇到新日期时先初始化对应项,首个元素为日期本身
  • 每次遍历直接把当前子数组的第二个值推入对应日期的数组即可
  • 最终提取Map的所有值转为数组,就是你需要的输出结构

兼容旧环境实现(普通对象版本)

如果需要适配不支持Map的老旧运行环境,可以用普通对象代替:

const group = {}
arr.forEach(([date, value]) => {
  if (!group[date]) group[date] = [date]
  group[date].push(value)
})
const result = Object.values(group)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:15:02