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

如何按4:1的交替比例合并两个数组?

解决方案:按每4个array1元素后插入1个array2元素合并数组

你的核心需求是:每取4个array1的元素后,插入1个array2的元素,直到array2元素全部插入。原代码的问题在于每次遍历array1的单个元素就尝试插入对应索引的array2元素,逻辑和需求完全不匹配。

正确实现思路

  1. 用一个变量跟踪array2当前待插入元素的索引
  2. 遍历array1,逐个将元素加入结果数组
  3. 每当已添加的array1元素数量达到4的倍数时,检查array2是否还有剩余元素,有则插入并移动array2的索引指针
  4. 遍历完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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:01:14