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

JavaScript中如何按嵌套数组首个元素分组第二个元素生成指定新数组

JavaScript实现数组分组的最优方案

实现思路

我们可以通过Array.prototype.reduce方法完成需求,仅需一次遍历原数组即可得到结果,时间复杂度为O(n),是性能最优的实现方式,同时代码简洁易读:

  • 迭代过程中取出每个子数组的第一个元素作为结果数组的索引,第二个元素作为待存入的值
  • 若结果数组对应索引位置未初始化,先初始化为空数组
  • 将值存入对应索引的数组中即可

代码实现

const firstArray = [[0,2], [1,3], [0,5], [2,8], [1,4], [3,2]];
const secondArray = firstArray.reduce((result, [index, value]) => {
  // 对应索引无数组则先初始化,ES2021+ 语法
  result[index] ||= [];
  result[index].push(value);
  return result;
}, []);

// 输出结果:[[2,5], [3,4], [8], [2]]
console.log(secondArray);

如果需要兼容低版本ES环境,将result[index] ||= []替换为if (!result[index]) result[index] = []即可。

补充说明

如果原数组中的索引存在断层,得到的结果数组对应断层位置会是空位,如果你需要过滤掉这些空位,可以在reduce结束后补充filter(Boolean)操作,示例中的索引是连续的0~3,无需额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:06:08