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

如何将数组B的元素间隔插入到数组A中实现交叉合并

实现两个数组元素交替插入的方案

你之前用splice正向遍历实现报错的核心原因是:每次插入元素都会让原数组a的长度+1,后续元素的索引整体后移1位,原定的插入位置会出现偏移,最终得到错误结果。

方案1:生成新数组(推荐,无副作用)

不需要修改原数组,代码更简洁可控,适合绝大多数场景:

let a = [1, 3, 5, 7]
let b = [2, 4, 6, 8]
// 每个a的元素后紧跟对应位置的b元素,再压平得到结果
a = a.flatMap((item, index) => [item, b[index]])

如果两个数组长度不一致,可以加兼容性判断:

a = a.flatMap((item, index) => b[index] ? [item, b[index]] : [item])
// 要是b更长的话,最后再拼接b剩余的元素即可
if (b.length > a.length) {
  a = a.concat(b.slice(a.length))
}

方案2:修改原数组(用倒序插入规避索引偏移问题)

如果必须直接修改原数组a,就倒序遍历数组b插入,后续的插入操作不会影响前面的索引位置:

let a = [1, 3, 5, 7]
let b = [2, 4, 6, 8]
// 从最后一位开始倒序插入
for (let i = b.length - 1; i >= 0; i--) {
  a.splice(i + 1, 0, b[i])
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:06:06