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

如何将嵌套数组中同索引元素分组?JavaScript实现咨询

用reduce实现按子数组索引分组数组元素

要实现将原数组中每个子数组相同索引的元素分组的需求,确实可以通过reduce方法配合forEach完成,核心逻辑是遍历每个子数组的元素,按元素所在索引将其归类到结果数组的对应位置。

实现代码

function mysteriousFunction(arr) {
  return arr.reduce((groupedArr, subArr) => {
    subArr.forEach((item, idx) => {
      // 初始化对应索引的分组数组(如果不存在的话)
      groupedArr[idx] = groupedArr[idx] || [];
      groupedArr[idx].push(item);
    });
    return groupedArr;
  }, []);
}

测试验证

const array = [
    [{name: 'hello', key: 1}, {name: 'foo', key: 2}],
    [{name:'bar', key: 3}]
];

console.log(mysteriousFunction(array));
// 输出结果:
// [
//   [{name: 'hello', key: 1}, {name:'bar', key: 3}],
//   [{name: 'foo', key: 2}]
// ]

逻辑说明

  1. reduce的初始值是一个空数组groupedArr,用来存储最终的分组结果。
  2. 遍历原数组中的每个子数组subArr,再通过forEach遍历子数组里的每个元素及其索引idx。
  3. 检查groupedArr中是否存在索引为idx的数组,不存在则初始化一个空数组,然后将当前元素推入该数组。
  4. 遍历完成后,groupedArr就是按子数组索引分组后的目标数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 14:03:23