数组的坍塌及解决方法

概念:
数组的坍塌可以理解为当你把数组前面的索引位置的那一个数据截取以后, 从这个索引开始,后面的每一个数据索引都会向前坍塌一个,这个就是数组塌陷。
实例

var arr = [1, 2, 3, 4];
for (var i = 0; i < arr.length; i++) {
       arr.splice(i, 1);
     }

代码的执行顺序:
当i===0时,arr.splice(0,1) =>[2,3,4];
当 i === 1时, arr.splice(1,1) =>[2, 4];
当 i === 2时,结束循环。

解决方法:
1.

var arr = [1, 2, 3, 4];
for (var i = arr.length - 1; i >= 0; i--) {
    // i 分别是数组里面的每一个的索引,只不过是倒着的 3 2 1 0,让它从后往前开始截取。
       arr.splice(i, 1);
     }

代码的执行顺序:
i === 3
arr.splice(3, 1) => arr === [1, 2, 3]
i === 2
arr.splice(2, 1) => arr === [1, 2]
i === 1
arr.splice(1, 1) => arr === [1]
i === 0
arr.splice(0, 1) => arr === []
i === -1, 结束循环。
解决方法
2.

var arr = [1, 2, 3, 4];
for (var i = 0; i < arr.length; i++) {
      arr.splice(i, 1);
      i--;
      }

代码的执行顺序:
i === 0
arr.splice(0, 1) => arr === [2, 3, 4] length === 3 i === -1
i === 0
arr.splice(0, 1) => arr === [3, 4] length === 2 i === -1
i === 0
arr.splice(0, 1) => arr === [4] length === 1 i === -1
i === 0
arr.splice(0, 1) => arr = [] length === 0 i === -1
i === 0 => 0 < 0 false
结束循环。

发布了5 篇原创文章 · 获赞 16 · 访问量 229

猜你喜欢

转载自blog.csdn.net/GSjesson/article/details/104641525