js数组去重

var arr = [1,1,1,1,2,2,2,1,1,6,6,8,9,47,589]
function array(array){
    var tem = {};
    var newArr = [];
    var len = array.length;
    for(var i=0; i<len;i++){
        if(!tem[array[i]]){
			tem[array[i]] = 'true';
            newArr.push(array[i]);
        }

    }

    return newArr;

}

上述代码主要使用了hash的方式去完成数组去重,原理是 第一次tem[array[0]]----》undefined,等我们取反进入if判断后立即把tem[array[0]]附上一个值(该值不能为0或js校验为false的值),现在tem变成

{

1 : "true"

}

当取到tem[array[1]]时,发现tem[array[1]]为tem[1],tem[1]的值为"true",因此if判断不会放行,后面的依次如上,最终完成数组去重

 

{

1 : "true",

2:"true"

}

 

 

如果数组里面是对象,如果要判断两个数组,一个数组要去除另一个数组里面的对象,例如:

let a= [{name:'liyang';uuid:12345},{name:'zhangfei';uuid:25364}]

let b = [{name:'liyang';uuid:12345},{name:'wanger';uuid:54861}{name:'zhangfei';uuid:25364},{name:'zhuge';uuid:14587}]

let device = []

for(let j=0;j<b.length;j++){
     let count=0
     for(let i=0;i<a.length;i++){
           if(a[i].name !== b[j].name)){
                count++
              }
           if(count == a.length){
              device.push({
                 'name':b[j].name,
                 'uuid':b[j].uuid
               })
            }
        }
   }

二 、es6最新语法得出来的方法

function dedupe(array) {
  return Array.from(new Set(array));
}

dedupe([1, 1, 2, 3]) // [1, 2, 3]

版权声明:本文为博主原创文章,未经博主允许不得转载。https://mp.csdn.net/postedit/79575751

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值