【问题标题】:javascript loop and push into every next indexjavascript循环并推送到每个下一个索引
【发布时间】:2021-07-26 17:10:16
【问题描述】:
 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", 1, 1);
  console.log(arr);

我得到了什么

[1, "item", 2, 3, "item", 4, 5, "item", 6, 7, "item", 8, 9, "item", 10, 11, "item", 12, 13, 
 "item", 14, 15, "item", 16]

我想要什么

[1, "item", 2,"item", 3, "item", 4,"item", 5,"item", "item", 6,"item", 7, "item", 8,"item", 
9,"item", "item", 10,"item", 11, "item", 12,"item", 13, "item", 14,"item", 15, "item", 16, "item"]

所以请帮我检查一下,我需要一个可以帮助我推送到数组中所有 n 索引的函数

【问题讨论】:

  • 您在“我想要的”下提供的数组未使用有效语法。有一堆不见了,
  • 谢谢,我已经更正了@Olian04

标签: javascript arrays for-loop arraylist


【解决方案1】:
function addItemEvery(arr, item, starting, frequency) {
  const newArr = [];
  arr.forEach((entry, index) => {
    newArr.push(entry);
    if (index + 1 >= starting)
      for (let i = 1; i <= frequency; i++) {
        newArr.push(item);
      }
  });
  return newArr;
}

【讨论】:

    【解决方案2】:

    这将为您提供所需的输出。

    var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16],
      pos = 1;
    interval = 2;
    
    while (pos < array.length) {
      array.splice(pos, 0, 'item');
      pos += interval;
    }
    
    console.log(array);

    【讨论】:

      【解决方案3】:

      基本版本(不包括startingfrequency 参数)可以通过像这样对Array#reduce 的一次调用来完成。我排除了startingfrequency,因为您没有在问题中定义它们的预期行为。

      const addItemEvery = (arr, el) =>
        arr.reduce((res, v) => [...res, v, el], []);
      
      const input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];
      const output = addItemEvery(input, "item");
      console.log(output);

      【讨论】:

        猜你喜欢
        • 2016-11-08
        • 1970-01-01
        • 2021-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-22
        • 2023-03-25
        • 2016-05-18
        相关资源
        最近更新 更多