Array collapse
var arr = [1,2,3,4,5];
- Traverse the array to delete each element
for(var i=0;i<arr.length;i++){
arr.splice(i,1);
}
console.log(arr);
- The above code failed to delete all the elements in the array, the reason is:
- When
i=0
the time element is deleted ,, 1 arr.length=4
,arr[0] = 2,arr[1] = 3
- When
i=1
the time element is deleted ,, 3 arr.length=3
,arr[0] = 2,arr[1] = 4,arr[2] = 5
- When
i=2
the time element is deleted ,, 5 arr.length=2
,arr[0] = 2,arr[1] = 4
- When
i=3
the time, because before arr.length=2
, arr[3]
does not exist
- This phenomenon is called array collapse .
Solution
- Delete backwards
for(var i=arr.length-1; i>=0; i--){
arr.splice(i,1);
}
console.log(arr);
- Let the variable not increment
for(var i=0; i<arr.length; i++){
arr.splice(i,1);
i--;
}
console.log(arr);
- Delete the first element every time
for(var i=0; i<arr.length; i++){
arr.splice(0,1);
}
console.log(arr);
- Use while loop to delete
while(arr.length){
arr.splice(0,1);
}
console.log(arr);