js数组去重

数组是多种类型可以混合的

[undefined,null,NaN,{},{},NaN,undefined,null]

 

下面我们以一个带有重复元素的数组为例,总结下数组去重的4种方法

var arr = [1,2,2,3,3,4,4,5,5]

 

1.将数组转化为set(集合带有去重特性) 再转为array

//(4) [1, 2, 33, 4]

var arr2 = [...new Set(arr)]

 

2.用hash法(object的key去重)

//(4) ["1", "2", "4", "33"]

var obj={}
for (var i in arr) {
    obj[arr[i]] = true;
}
return Object.keys(obj);

 

3.建立新数组,遍历旧数组,新数组中没有的就添加

//(4) [1, 2, 33, 4]

var newArr = [];
for (var i in arr) {
    if (newArr.indexOf(arr[i]) === -1) {
        newArr.push(arr[i]);
    }
}
return newArr;

 

4.双重遍历旧数组,如果后面有与前面相同的,删除后面的值

for (var i=0, len=arr.length; i<len; i++) {
    for(var j=i; j<len;  j++){
        if(arr[i]===arr[j]){
               arr=arr.splice(j,1);
        }
    }
}
return arr;

 

结束

如果文章对你有帮助,麻烦点赞哦!一起走码农花路~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值