如何基于子数组首个日期元素合并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
相关产品推荐
相关产品推荐

