Javascript 如何从数组中弹出所有元素 var-arr=[0,1,2,2,3,4,5,5,6]; for(设i=0;i

Javascript 如何从数组中弹出所有元素 var-arr=[0,1,2,2,3,4,5,5,6]; for(设i=0;i,javascript,arrays,loops,data-structures,Javascript,Arrays,Loops,Data Structures,我不知道为什么它只返回给定的数字,而不是数组中的每个数字。非常感谢您的帮助。根据文档返回: 从数组中删除的元素未定义如果数组为空 因此,从技术上讲,每次迭代代码都会从数组中删除最后一个元素,从而更改.length属性 这可能是一个很好的表示循环中的扩展索引发生了什么: var-arr=[0,1,2,2,3,4,5,5,6]; for(设i=0;i0;i--){ let item=arr.pop() console.log(项目) }因为循环时arr.length正在更改。也可以记录arr.le

我不知道为什么它只返回给定的数字,而不是数组中的每个数字。非常感谢您的帮助。

根据文档返回:

从数组中删除的元素<代码>未定义如果数组为空

因此,从技术上讲,每次迭代代码都会从数组中删除最后一个元素,从而更改
.length
属性

这可能是一个很好的表示循环中的扩展索引发生了什么:

var-arr=[0,1,2,2,3,4,5,5,6];
for(设i=0;i}
在循环时,能否将的
更改为
?
然后,您将控制台记录所有项目

while(arr.length){
let item=arr.pop()
console.log(项目)
}

您需要反转迭代,因为.pop方法会删除最后一项,因此当从0迭代到最后一项时,您将无法找到所有项:)

var-arr=[0,1,2,2,3,4,5,5,6];
对于(设i=arr.length;i>0;i--){
let item=arr.pop()
console.log(项目)

}
因为循环时
arr.length
正在更改。也可以记录
arr.length
以更好地说明问题<代码>控制台.log({i,项,“arr.length”:arr.length})
。否则,这就很好地演示了这个问题。您可以使用for循环来实现这一点,您只需要反向迭代,检查我的答案
var arr = [0,1,2,2,3,4,5,5,6];

for(let i = 0; i < arr.length; i++) {
    let item = arr.pop()
    console.log(item)
}
//Returns 6, 5, 5, 4, 3