js实现数组去重4种方法总结

// 方法一:遍历数组法:
// 思路:新建一个新数组,遍历传入数组,如果值不在新数组就加入该新数组中。
function uniqueItem (arr){ 
var arrNew = []; 
for(var i = 0,len=arr.length; i < len; i++){ 
    if (arrNew.indexOf(arr[i]) == -1) 
        arrNew.push(arr[i]); 
    } 
    return arrNew; 
}

// 方法二:排序后相邻去除法
// 思路:给传入数组进行排序,排序后相同值相邻,之后遍历时新数组只加入不与前一值重复的值。
function uniqueItem (arr){ 
    arr.sort(); 
    var arrNew=[arr [0]]; 
    for(var i = 0,len=arr.length; i < len; i++){ 
        if( arr [i] !== arrNew[arrNew.length-1]){ 
          arrNew.push(arr[i]); 
        } 
     } 
     return arrNew; 
}

// 方法三:对象的键值法
// 思路:新建一js对象以及新数组,遍历传入数组时,判断值是否为js对象的键,如果不是则给对象新增该键并放入新数组。
function uniqueItem (arr){  
    var h{};     
    var arrNew[];   
    for(var i = 0,len=arr.length; i < len; i++){   
        if(!h[arr[i]]){  
            h[arr[i]] = true; 
            arrNew.push(arr[i]);  
        }  
    }  
    return arrNew;  
}  
// 方法四:采用es6中set和Array.from
// 思路:ES6中的set是一种新的数据结构,它可以接收一个数组或者是类数组对象,自动去重其中的重复项目。
// Array.from方法可以把set数据结构转换为数组。注意兼容性!

let arrNew = Array.from(new Set(arr));

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值