关于删除数组中相同元素的一个小技巧

如果说到删除数组中的相同元素,比如这里定义一个数组var arr=[1,1,2,2,3,3,3],我想要删除数组中的2,那么应该怎么做呢。大家都会想到使用for循环就可以了,of course . 

var arr=[1,1,1,2,2,2,3,3,3,3];
for (var i=0,len=arr.length;i<len;i++){
    if(arr[i]===2){
        arr.splice(i,1)}
}
我们预期的结果应该是arr=[1,1,1,3,3,3,3],但是实际的打印结果是[1,1,1,2,3,3,3,3],奇怪,怎么还有一个2没有删除呢,那是因为当我们删除第一个2(索引为3)后,后面的元素都会向前挪一步,这时,这个数组就变成了[1,1,1,2,2,3,3,3,3] ,进行下次循环时 i 就从索引4开始了,此时,就会有一个2被跳过去。

那么怎么才能实现我们想要的结果呢,我们可以从后向前循环,也就是把i的初始值为arr.length-1,每次循环i的值自减1,就是这样

var arr=[1,1,1,2,2,2,3,3,3,3];
for (var i=arr.length-1;i>=0;i--){
    if(arr[i]===2){
        arr.splice(i,1)}
}
此时,arr=[1,1,1,3,3,3,3],就是我们想要的结果了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值