首页 > 解决方案 > Javascript实时循环数组

问题描述

有没有办法在 Javascript 或使用 JQuery 中“实时”循环数组?我的意思是创建一个循环,在开始循环之前读取数组内容而不缓存它,例如,如果我这样做。

var array = [{'hi':0},{'how':1},{'are':2},{'you':3}];

for(var i=0;i < array.length;i++){
  console.log(i);
  if(i == 2){
    array.push({'?':4});
  }
}
console.log(array);

循环将只输出 4 个值,但在完成循环之前它已经有 5 个值

我还想循环在循环运行时插入的新值。

为了更清楚,我需要这样做,因为我正在构建一个 Web 应用程序,该应用程序在向服务器提交数据之前创建一个队列,一个循环提交数组中的数据,但这个数组也可以在过程中由其他函数更新

谢谢!

标签: javascriptjqueryarraysloops

解决方案


您的代码可以按您的意愿工作。它之所以有效,是因为在每次迭代中,您都会i针对进行评估array.length,因此即使在一次迭代期间长度发生变化,循环也会相应地进行调整。

如果您使用它,它将不起作用:

for(var i=0, j=array.length; i<j; i++){

因为在这种情况下,长度存储在 中j,然后j不会改变,无论循环中发生了什么。


推荐阅读