数组塌陷

数组塌陷

  • 先准备一个数组
var arr = [1,2,3,4,5];
  • 遍历数组删除每一个元素
for(var i=0;i<arr.length;i++){
    
    
	arr.splice(i,1);
	// 0 - [2,3,4,5]
	// 1 - [2,4,5]
	// 2 - [2,4]
	//
}
console.log(arr); // [2,4]
  • 上面的代码没能将数组中的元素都删掉,原因是:
  1. i=0 时,,删除的是元素 1,arr.length=4arr[0] = 2,arr[1] = 3
  2. i=1 时,,删除的是元素 3,arr.length=3arr[0] = 2,arr[1] = 4,arr[2] = 5
  3. i=2 时,,删除的是元素 5,arr.length=2arr[0] = 2,arr[1] = 4
  4. i=3 时,因为之前arr.length=2arr[3]是不存在的
  5. 这种现象就叫做数组塌陷

解决方法

  1. 倒着删
for(var i=arr.length-1; i>=0; i--){
    
    
	arr.splice(i,1);
}
console.log(arr);	// []
  1. 让变量不递增
for(var i=0; i<arr.length; i++){
    
    
	arr.splice(i,1);
	i--;
}
console.log(arr);	// []
  1. 每次删除第一个元素
for(var i=0; i<arr.length; i++){
    
    
	arr.splice(0,1);
}
console.log(arr);	// []
  1. 使用while循环删
while(arr.length){
    
    
	arr.splice(0,1);
}
console.log(arr);	// []

猜你喜欢

转载自blog.csdn.net/qq_45677671/article/details/114290750