javascript - 在 Javascript for 循环中弹出数组未获取所有数组项

标签 javascript for-loop stack

我想弄清楚为什么下面的代码只弹出数组的最后 3 项而不是最后两项。

var test = ['test1','test2','test3','test4','test5'];

console.log('length - '+test.length);

for(var k = 0; k <= test.length; k++) {
    var tests = test.pop();
    console.log(tests+' - '+k);
}

以上代码的结果:

length - 5
(index):30 test5 - 0
(index):30 test4 - 1
(index):30 test3 - 2

最佳答案

Array.prototype.pop方法修改了原始数组,因此 for-loop 当然只会访问一半的值,直到数组完全清空。

您可以做的是改用 while 循环:

var test = ['test1', 'test2', 'test3', 'test4', 'test5'];

console.log('length - ' + test.length);

while (test.length) {
  var tests = test.pop();
  console.log(tests);
}

关于javascript - 在 Javascript for 循环中弹出数组未获取所有数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33224711/

相关文章:

javascript - 关闭后 qtip2 位置发生变化

python - 循环列表并打印字符串的这些元素

java - 在Java中,如何轻松地深度复制 Stack<MyElement> 实例?

c++ - 基于堆栈的迷宫探索

facebook - FB/swift : How to append an array via a for-loop in FBSDKGraphRequest?

visual-c++ - 为什么每次递归都使用这么多的堆栈空间?

javascript - 替换 contenteditable div 中的选定文本

java - 将 Jquery 事件附加到 JSF 数据表

javascript - 监听全局变量变化的函数?

javascript for 循环只给出元素的数量