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

如何合并两数组生成新数组:同索引元素交替,长数组剩余元素追加

数组元素交替排列的简洁实现方案

给定两个数组:

let array1 = [1,2,3,4,5,6,7]
let array2 = ['a', 'b', 'c', 'd']

需要生成新数组,使两数组同索引元素交替排列,长数组剩余元素追加到末尾,预期结果:

let result = [1, 'a', 2, 'b', 3, 'c', 4,'d', 5, 6, 7]

要求实现简洁且不使用for of循环,可参考以下两种方案:

方案一:利用Array.from + flat + filter

const result = Array.from({ length: Math.max(array1.length, array2.length) }, (_, idx) => [array1[idx], array2[idx]])
  .flat()
  .filter(item => item !== undefined);

逻辑说明:

  • 用Array.from创建一个长度等于两数组最大长度的数组,每个元素是对应索引的两个数组元素组成的子数组(短数组超出长度的位置会返回undefined)
  • 调用flat()将二维数组扁平化处理
  • 最后用filter过滤掉所有undefined值,得到目标数组

方案二:利用forEach遍历最大长度

const result = [];
Array(Math.max(array1.length, array2.length)).fill().forEach((_, idx) => {
  if (array1[idx] !== undefined) result.push(array1[idx]);
  if (array2[idx] !== undefined) result.push(array2[idx]);
});

逻辑说明:

  • 先创建一个长度为两数组最大长度的空数组,用fill()填充后调用forEach遍历每个索引
  • 依次判断对应索引的元素是否存在,存在则推入结果数组,实现交替排列,最后自动保留长数组的剩余元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 12:48:14