使用js数组作为堆栈

时间:2012-06-01 11:03:13

标签: javascript

我认为它应该提醒4次,但为什么它只提醒了2次。有没有人能为我解释一下?

   var arr = new Array;

   arr.push("1");
   arr.push("2");
   arr.push("3");
   arr.push("4");

   for(var i=0;i<arr.length;i++){
     alert(arr.pop());
   }

4 个答案:

答案 0 :(得分:6)

for循环更改为while循环:

while(arr.length) {
    alert(arr.pop());   
}

问题是您从数组中删除元素,因此length会减少,提前结束for循环。在for循环的2次迭代后,arr.length为2,i也为2,因此循环结束。

以上是working example以上内容。

答案 1 :(得分:1)

你的代码检查每个循环的长度,所以在第二个循环数组长度必须是2(2 poped)但var i是2所以它们将循环

尝试使用for,或者您可以使用

var arr = new Array;

arr.push("1");
arr.push("2");
arr.push("3");
arr.push("4");
var length = arr.length;
for(var i=0;i<length;i++){
    alert(arr.pop());
}

答案 2 :(得分:0)

Pop从数组中删除元素,并减少length属性。因此,在两个循环i = 2并且数组长度= 2之后。

   var arr = new Array;
   arr.push("1");
   arr.push("2");
   arr.push("3");
   arr.push("4");
   var len = arr.length;
   for(var i=0;i<len;i++){
       alert(arr.pop());
   }

答案 3 :(得分:0)

由于pop()操作在循环执行期间数组长度减少。所以经过2次迭代后,i == 2和arr.length == 2