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
相关产品推荐
相关产品推荐

