如何基于嵌套数组创建新数组?按索引提取子数组元素
嵌套数组按索引提取元素的实现方案
针对你给出的数组转换需求,这里提供两种实用的实现方式:
方法一:使用reduce遍历收集
这是直接针对你的场景(子数组长度固定为2)的简洁写法:
const arr = [ [1, 0], [0, 2], [0, 1], [0, 1] ]; const newArr = arr.reduce((result, currentSubArr) => { // 将当前子数组的第0个元素加入结果的第一个数组 result[0].push(currentSubArr[0]); // 将当前子数组的第1个元素加入结果的第二个数组 result[1].push(currentSubArr[1]); return result; }, [[], []]); // 初始值是两个空数组组成的容器
方法二:通用型写法(适配任意长度的子数组)
如果你的子数组长度不固定(但所有子数组长度一致),可以用这种更通用的方式,不用硬编码索引数量:
const arr = [ [1, 0], [0, 2], [0, 1], [0, 1] ]; // 先获取子数组的长度(假设所有子数组长度相同) const subArrayLength = arr[0].length; // 生成对应长度的结果数组,每个位置收集原数组对应索引的元素 const newArr = Array.from({ length: subArrayLength }, (_, index) => { return arr.map(subArr => subArr[index]); });
两种方法最终都会得到你想要的结果:[[1,0,0,0], [0,2,1,1]]
内容的提问来源于stack exchange,提问作者nihat onal
相关产品推荐
相关产品推荐

