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

如何将二维数组转换为元素交替排列的一维数组?

二维数组转交替排列一维数组的实现

嘿,要把你的二维数组转成元素交替排列的一维数组,核心思路是按列遍历原数组,而不是常规的按行合并。这里给你两种实用的实现方式:

方法一:通用型(适配子数组长度不一致的情况)

如果你的二维数组里子数组长度可能不一样,这个方法能自动处理缺失的元素:

const test2d = [ ["foo", "bar"], ["baz", "biz"] ];
// 先获取最长子数组的长度,确定需要处理多少列
const maxColumnCount = Math.max(...test2d.map(subArr => subArr.length));

// 按列遍历,收集每一列的所有元素后扁平合并
const alternatingArray = Array.from({ length: maxColumnCount }, (_, colIndex) => {
  return test2d.map(row => row[colIndex]).filter(Boolean);
}).flat();

console.log(alternatingArray); // 输出 ["foo", "baz", "bar", "biz"]

思路解释:

  1. 先算出所有子数组里最长的那个长度,确保不会漏掉任何一列;
  2. 用Array.from创建对应列数的“占位数组”,遍历每一列;
  3. 对每一列,提取所有行中该位置的元素,用filter(Boolean)过滤掉不存在的元素(比如某行没有该列的内容);
  4. 最后用flat()把按列分组的数组扁平成一维数组。

方法二:简化型(子数组长度一致时使用)

如果你的二维数组里所有子数组长度都相同(就像你的示例那样),可以用更简洁的循环实现:

const test2d = [ ["foo", "bar"], ["baz", "biz"] ];
const alternatingArray = [];
// 确定列数(取第一个子数组的长度即可)
const columnCount = test2d[0].length;

// 外层循环遍历列,内层循环遍历行
for (let col = 0; col < columnCount; col++) {
  for (let row = 0; row < test2d.length; row++) {
    alternatingArray.push(test2d[row][col]);
  }
}

console.log(alternatingArray); // 输出 ["foo", "baz", "bar", "biz"]

思路解释:

直接按列的顺序循环,每遍历一列,就把所有行里该列的元素依次加入结果数组,这样自然就实现了交替排列的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:54:33