如何将嵌套数组中同索引元素分组?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}] // ]
逻辑说明
reduce的初始值是一个空数组groupedArr,用来存储最终的分组结果。- 遍历原数组中的每个子数组
subArr,再通过forEach遍历子数组里的每个元素及其索引idx。 - 检查
groupedArr中是否存在索引为idx的数组,不存在则初始化一个空数组,然后将当前元素推入该数组。 - 遍历完成后,
groupedArr就是按子数组索引分组后的目标数组。
内容的提问来源于stack exchange,提问作者sheepiiHD
相关产品推荐
相关产品推荐

