javascript - 将数组项插入另一个数组中的第 n 个元素

标签 javascript arrays

问题来了。

我有2个数组

数组:

var arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];
var arr2 = ['up', 'down', 'left', 'right'];

我想在每个 n 步的 arr1 中插入 arr2 元素,例如:

/*
If the step is 2 the result would be : 
*/
[1,2,'up',3,4,'down',5,6,'left',7,8,'right',9, 10, 11, 12, 13, 14, 15, 16];

我以这个函数为起点,但我不知道如何解决我的问题:How to add item in array every x items?

/**
     * Add an item to an array at a certain frequency starting at a given index
     * @param array arr - the starting array
     * @param mixed item - the item to be inserted into the array
     * @param integer starting = the index at which to begin inserting
     * @param integer frequency - The frequency at which to add the item
     */
    function addItemEvery(arr, item, starting, frequency) {
      for (var i = 0, a = []; i < arr.length; i++) {
        a.push(arr[i]);
        if ((i + 1 + starting) % frequency === 0) {
          a.push(item);
          i++;
          if(arr[i]) a.push(arr[i]);
        }
      }
      return a;
    }

    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];
    arr = addItemEvery(arr, "item", 0, 3);
    console.log(arr);

非常感谢您的帮助

最佳答案

这应该会让你走上正轨。请注意,这会修改原始数组:

let arr1 = [1,2,3,4,5,6,7,8,9];
let arr2 = ['up', 'down', 'left', 'right'];
let nth = 2;
let result = arr1.reduce((carry, current_value, index, original)=>{
    // insert current element of arr1
    carry.push(current_value);
    // insert from arr2 if on multiple of nth index and there's any left
    if((index+1) % nth === 0 && arr2.length!=0){
        carry.push(arr2.shift())
    }
    return carry;
}, []);
console.log('result', result);

关于javascript - 将数组项插入另一个数组中的第 n 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57824156/

相关文章:

c++ - 为什么指向指针的指针是一个矩阵?

javascript - 如何使用 JQuery 创建一个新的 img 标签,使用来自 JavaScript 对象的 src 和 id?

javascript - 从获取的 WMS GetCapability 请求返回数组

javascript - 下划线从数组中删除某些属性上包含空值的对象

javascript - 渲染重构导致函数未定义

java - 二维数组无法解析为变量

java - 如何从数组中获取唯一值

javascript - 将 flash div 调整为完整的浏览器高度和宽度?

javascript - Angular Keycloak 登录(静默)

javascript - 根据条件需要表单元素 (Happy.js)