js数组中对象去重的方法 reduce去重

js数组中对象去重的方法

eg:
let arr = [
	{queuecode:"WQ000278315",queuename:"批次整合队列20190419050000002"},
    {queuecode:"WQ000030521",queuename:"批次整合队列20190419050004545"},
    {queuecode:"WQ000140631",queuename:"批次整合队列20170411212333002"},
    {queuecode:"WQ000278315",queuename:"批次整合队列20190419051212000"},
    {queuecode:"WQ000140631",queuename:"批次整合队列20200412245544545"},
]

1. 利用for循环

利用访问数组中每个对象唯一属性的属性值是否存在于新对象obj中,如果存在跳过,不存在就在新对象中强行添加该属性值为属性,其属性值为ture,并把当前元素对象push到新数组中。

let newArr = [];
let obj ={};
for( var i = 0; i< arr.length ;i++){
    if(!obj[arr[i].属性名]){
        newArr.push(arr[i]);
        obj[arr[i].属性名] = true;
    }
}

在浏览器中运行:
在这里插入图片描述

2. 利用Array.prototype.reduce()方法

reduce() 接收一个回调函数作为累加器,数组中的每个值(从左到右)开始汇总,最终汇总为一个值。

回调函数第一个参数是每次汇总操作后的结果,第二个参数是当前元素。

实际上判断方法和使用循环一样,新建一个对象,新对象用来存储对比后的结果,即每次拿到的对象唯一属性的属性值是否存在新对象中,不存在就在新对象中强行添加该属性值为属性,其属性值为true,并把当前元素对象push到汇总操作的数组中。新数组用来接收汇总去重后得到的新数组。

let obj = {};
let newArr = arr.reduce(function(prev, elem) {
    obj[elem.属性名] ? '' : obj[elem.属性名] = true && prev.push(elem);
    return prev;
}, []);
console.log(newArr); 

在这里插入图片描述

reduce方法详解

评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉沦与遐想。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值