当使用循环从头遍历删除数组中所有元素时,会发现最终的结果不是我们想要的,如下图:
代码:
<script>
let arr = [1, 2, 3, 4]
for (let i = 0; i < arr.length; i++) {
arr.shift()
}
console.log(arr)
</script>
运行结果:
为什么会这样呢?
当删除完第一个元素,i变成1,数组长度变成3(因为删除了一个元素,数组长度减少了1)。
当删除完第二个元素,i变成2,数组长度变成2,2<2不满足,循环终止。因此数组的最终结果为[3,4]。
解决办法:倒序删除
代码:
<script>
let arr = [1, 2, 3, 4]
for (let i = arr.length; i > 0; i--) {
arr.pop()
}
console.log(arr)
</script>
原理: