如何按4:1的交替比例合并两个数组?
解决方案:按每4个array1元素后插入1个array2元素合并数组
你的核心需求是:每取4个array1的元素后,插入1个array2的元素,直到array2元素全部插入。原代码的问题在于每次遍历array1的单个元素就尝试插入对应索引的array2元素,逻辑和需求完全不匹配。
正确实现思路
- 用一个变量跟踪
array2当前待插入元素的索引 - 遍历
array1,逐个将元素加入结果数组 - 每当已添加的
array1元素数量达到4的倍数时,检查array2是否还有剩余元素,有则插入并移动array2的索引指针 - 遍历完
array1后,若array2还有未插入的元素,全部追加到结果末尾(适配array1元素不足但array2还有剩余的场景)
代码实现
var array1 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"], array2 = [1, 2, 3], result = [], arr2Index = 0; for (let i = 0; i < array1.length; i++) { result.push(array1[i]); // 每添加4个array1元素后,插入array2的下一个元素 if ((i + 1) % 4 === 0 && arr2Index < array2.length) { result.push(array2[arr2Index]); arr2Index++; } } // 处理array2剩余元素(如果有的话) while (arr2Index < array2.length) { result.push(array2[arr2Index]); arr2Index++; } console.log(result); // 输出:["a", "b", "c", "d", 1, "e", "f", "g", "h", 2, "i", "j", 3]
代码说明
arr2Index专门跟踪array2的插入位置,避免无效遍历(i + 1) % 4 === 0:因为数组索引从0开始,第4个元素的索引是3,i+1对应实际元素序号,当序号为4的倍数时触发插入逻辑- 末尾的
while循环兼容array1元素数量不足,但array2还有剩余元素的场景
内容的提问来源于stack exchange,提问作者thomas.anthony
相关产品推荐
相关产品推荐

