Javascript:在循环时为数组添加值,然后也将包含在循环中

Fli*_*ion 11 javascript arrays loops

对不起,如果这是一个dupplicate,似乎无法找到它.

var a = [1,2,3,4];
a.forEach(function(value){
  if(value == 1) a.push(5);
  console.log(value);
});
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法(任何类型的循环或数据类型),这样它将在循环期间输出1 2 3 4 5(或以任何顺序,只要所有5个数字都在那里)

new*_*rey 27

使用Array.prototype.forEach()回调适用于附加到或从执行期间数组中删除元素.从规格:

forEach处理的元素范围在第一次调用callbackfn之前设置.callbackfn将不会访问在调用forEach之后附加到数组的元素.

但是,您可以使用标准for循环,并在每次迭代期间检查数组的当前长度:

for (var i = 0; i < a.length; i++) {
    if (a[i] == 1) a.push(5);
    console.log(a[i]);
}
Run Code Online (Sandbox Code Playgroud)


Den*_*ret 6

明显的解决方案:

var a = [1,2,3,4];
for (var i=0; i<a.length; i++){
  var value = a[i];
  if(value == 1) a.push(5);
  console.log(value);
}
Run Code Online (Sandbox Code Playgroud)