【问题标题】:adding elements to the same array being iterated in js将元素添加到在js中迭代的同一个数组
【发布时间】:2018-03-12 05:40:22
【问题描述】:

我有一个长度为 3 的 JavaScript 数组

arr = [1, 3, 8];

有没有办法在我迭代时向arr 添加元素?我想在现有的arr 中插入两个值 10 和 20。我可以这样做吗?新添加的元素 10 和 20 也必须在同一个 for in 循环中循环。

for(var i in arr) {
  if( i == 0 ) {
   arr[length + 0] = 10;
   arr[length + 1] = 20;
  }
}

或者,在迭代时向数组添加元素并确保新添加的元素也将被循环的正确方法是什么?

【问题讨论】:

  • 使用另一个for循环for(var i = 0; i < arr.length; i++)并使用arr.push(10); arr.push(20);而不是arr[length+0]
  • for (var ... in ...) 仅适用于对象:Why is using “for…in” with array iteration a bad idea?
  • 在迭代过程中是否需要添加额外的元素?为什么不能先添加呢?
  • @AlanLarimer 很可能他简化了问题中的代码,而真正的代码并没有像这样添加常量。
  • 您不应该使用for 循环来改变您在计算机科学中使用的实体。你最好永远不要这样做,但如果你真的需要...... a) 提前准备好数组,然后通过 for 循环进行迭代,b) 在 while 循环中修改它 c) 通过递归修改它。跨度>

标签: javascript arrays for-loop iteration


【解决方案1】:

您可以使用for statement 并在迭代数组时检查length

对于for ... in statement,不允许迭代新元素。

添加到发生迭代的对象的属性可以在迭代中访问或省略。一般来说,除了当前正在访问的属性之外,最好不要在迭代过程中添加、修改或删除对象的属性。

var array = [1, 3, 8],
    i;

for (i = 0; i < array.length; i++) {
    console.log(array[i]);
    if (i === 0) {
        array.push(10, 20);
    }
}

【讨论】:

  • 在迭代过程中是否需要添加额外的元素?为什么不能先添加呢?
  • @AlanLarimer,操作说明了这一点。如果在迭代之前添加,除了for ... in 的关键用法之外,不需要进行任何更改。
  • 对不起。不小心评论了你的答案,意在评论 OP。
【解决方案2】:

您真的不需要这样做,可能有更好的方法。但是,如果您必须这样做,请改用 while 循环:

var arr = [1, 2, 3];
var i = 0;
while (i < arr.length) {
  if( i == 0 ) {
    arr.push(10, 20);
  }
  console.log(arr[i]); // 1, 2, 3, 10, 20
  i++;
}

【讨论】:

  • 添加到数组中的更惯用的方法是arr.push(10)
  • 是的,我很着急,所以我刚刚复制了他的代码。将编辑
猜你喜欢
  • 2016-11-30
  • 1970-01-01
  • 2020-03-05
  • 2015-02-07
  • 2014-11-05
  • 1970-01-01
  • 1970-01-01
  • 2017-01-15
  • 2020-09-07
相关资源
最近更新 更多