js数组坍塌

js数组坍塌

首先 这里有个数组

 var arr = [0,1,2,3,4,5,6,7,8,9];

然后再用 for 循环,循环 删除数组中的数据,每循环一次 删除一个数据单元。

 for(var i = 0; i <= arr.length - 1; i++ ){
                arr.splice(i,1)
            }
	console.log(arr)

那么 现在的输出是 [1, 3, 5, 7, 9] 还剩 5 个 单元 ,也就是还有一半没有删除。

因为:

​ 我们使用for 循环遍历 arr , 当i=0的时候 , 我们删除了位置为0的元素,

​ 此时,位置为1的元素接替了位置 0 , 但 同时 i 也累加 了, 下次执行 删除

​ 操作的时候 i 变为1 , 再次执行删除操作,其实是删除了 现在位置为1 的元素 ,

​ 中间 跳过了, 所以 最后的结果 只 删除了一半 。

解决 方法有两种

方法1 :

// 在循环体内让 i-- , 这样每次删除 就是 只删除 位置为0 的元素   
for(var i = 0; i <= arr.length - 1; i++ ){
                arr.splice(i,1)
                i--;
            };
            console.log(arr);

方法 2 :

// 倒着来,这样每次删除的就是最后一个位置 的元素
for(var i = arr.length - 1; i>=0; i--){
                arr.splice(i,1);
            }
            console.log(arr);

这样 就全部删除完了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值