javascript - 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 应用程序,该应用程序在向服务器提交数据之前创建一个队列,一个循环提交数组中的数据,但这个数组也可以在过程中由其他函数更新
谢谢!
解决方案
您的代码可以按您的意愿工作。它之所以有效,是因为在每次迭代中,您都会i
针对进行评估array.length
,因此即使在一次迭代期间长度发生变化,循环也会相应地进行调整。
如果您使用它,它将不起作用:
for(var i=0, j=array.length; i<j; i++){
因为在这种情况下,长度存储在 中j
,然后j
不会改变,无论循环中发生了什么。