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

如何动态重组多个等长数组的同索引元素

实现多等长数组的索引元素重组

你需要将数量不固定的多个等长数组,按索引把对应位置的元素整合为新数组,以下是几种简洁的JavaScript实现方案:

基础实现(利用map嵌套)

直接基于第一个数组的长度遍历索引,收集每个子数组对应位置的元素:

const arrayOfarray = [
  ['a','b','c','d','e','f'],
  ['h','i','j','k','l','m'],
];

const expectedResult = arrayOfarray[0].map((_, index) => 
  arrayOfarray.map(subArr => subArr[index])
);

console.log(expectedResult);
// 输出:[['a','h'],['b','i'],['c','j'],['d','k'],['e','l'],['f','m']]

封装成可复用函数(含空输入判断)

如果需要处理空输入场景,封装成函数更实用:

function transposeEqualLengthArrays(arrays) {
  // 处理空数组输入
  if (!arrays.length) return [];
  // 按索引转置
  return arrays[0].map((_, index) => arrays.map(subArr => subArr[index]));
}

// 测试用例
const testArray = [['x','y'],['p','q'],['m','n']];
console.log(transposeEqualLengthArrays(testArray));
// 输出:[['x','p','m'],['y','q','n']]

用Array.from实现(不依赖第一个数组的map)

如果不想依赖第一个数组的map方法,可以用Array.from创建目标长度的数组再处理:

const arrayOfarray = [
  ['a','b','c','d','e','f'],
  ['h','i','j','k','l','m'],
];

const expectedResult = Array.from(
  { length: arrayOfarray[0].length }, 
  (_, index) => arrayOfarray.map(subArr => subArr[index])
);

注意事项

以上方案均假设所有子数组长度一致,若存在长度不同的情况,可根据需求调整(比如取最短子数组的长度,或为缺失位置补undefined)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 14:15:38