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

JavaScript奇偶数组按顺序合并的实现方法咨询

交替合并两个数组的实现方案

嘿,我懂你要的是什么——你不是想简单拼接两个数组,而是要交替合并奇数数组和偶数数组,让它们按顺序排列对吧?concat()确实只能把B直接接在A后面,得到[1,3,5,7,2,4,6,8],肯定不是你要的结果。下面给你几个实用的实现方式:

方法一:手动遍历交替插入(最直观)

因为你的两个数组长度完全相同(都是4个元素),我们可以直接循环每个索引,依次把A和B的对应元素推入结果数组:

const A = [1,3,5,7];
const B = [2,4,6,8];
const C = [];

for (let i = 0; i < A.length; i++) {
  C.push(A[i]);
  C.push(B[i]);
}

console.log(C); // 输出: [1,2,3,4,5,6,7,8]

这个方法逻辑清晰,新手也能一眼看懂,适合需要明确控制流程的场景。

方法二:用flatMap简化代码(函数式风格)

如果你喜欢更简洁的写法,可以用数组的flatMap方法——它会先对每个元素做映射,再自动扁平化结果数组:

const A = [1,3,5,7];
const B = [2,4,6,8];
const C = A.flatMap((num, index) => [num, B[index]]);

console.log(C); // 输出: [1,2,3,4,5,6,7,8]

一行代码就能搞定,非常优雅,适合熟悉数组高阶方法的开发者。

额外补充:处理数组长度不一致的情况

如果以后遇到两个数组长度不同的场景,我们可以取最长数组的长度,遍历过程中跳过不存在的元素,确保所有元素都被正确合并:

const A = [1,3,5,7,9];
const B = [2,4,6,8];
const C = [];
const maxLength = Math.max(A.length, B.length);

for (let i = 0; i < maxLength; i++) {
  if (A[i] !== undefined) C.push(A[i]);
  if (B[i] !== undefined) C.push(B[i]);
}

console.log(C); // 输出: [1,2,3,4,5,6,7,8,9]

这种写法兼容性更强,能覆盖更多边界情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:15:17