js数组去重

一、ES6中Set去重

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

二、reduce 实现对象数组去重复

var resources = [ 
    { name: "张三", age: "18" }, 
    { name: "张三", age: "19" }, 
    { name: "张三", age: "20" }, 
    { name: "李四", age: "19" }, 
    { name: "王五", age: "20" }, 
    { name: "赵六", age: "21" } 
] 
var temp = {}; 
resources = resources.reduce((prev, curv) => { 
 // 如果临时对象中有这个名字,什么都不做 
 if (temp[curv.name]) { 
 
 }else { 
    // 如果临时对象没有就把这个名字加进去,同时把当前的这个对象加入到prev中 
    temp[curv.name] = true; 
    prev.push(curv); 
 } 
 return prev 
}, []);

三、Array.filter() 加 indexOf

var test = [1,2,3,4,3,4,5,6,7,5];
test.filter((item,index)=>{return index === test.indexOf(item)})

四、双重for循环去重

function distinct(arr) { 
    for (let i=0, len=arr.length; i<len; i++) { 
        for (let j=i+1; j<len; j++) { 
            if (arr[i] == arr[j]) { 
                arr.splice(j, 1); 
                // splice 会改变数组长度,所以要将数组长度 len 和下标 j 减一 
                len--; 
                j--; 
            } 
        } 
    } 
    return arr; 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值