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

新手上路,请多包涵

抱歉,如果这是重复的,似乎无法找到它。

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

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

原文由 Flion 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 348
2 个回答

使用 Array.prototype.forEach() 不会 将回调应用于执行期间附加到数组或从数组中删除的元素。从 规格

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

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

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

原文由 newfurniturey 发布,翻译遵循 CC BY-SA 3.0 许可协议

明显的解决方案:

 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);
}

原文由 Denys Séguret 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题