总结 js 对象数组去重的方法

文章介绍了在JavaScript中去除对象数组重复元素的三种方法:1)使用reduce,通过创建一个对象作为临时存储,避免重复;2)结合filter和findIndex,检查当前元素在数组中的首次出现位置是否等于当前位置,确保唯一性;3)利用Map的has和set方法进行去重。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.使用reduce实现

function arrUnique(arr,prop){
            let obj = {};
            return arr.reduce(function(preValue,item){
                //判断是否存在这个属性值如果存在赋值为空字符串,不存在赋值为true
                //为ture时添加到返回的数组中
                obj[item[prop]] ? '' : obj[item[prop]] = true && preValue.push(item);
                return preValue
            },[])  //[]为初始值数组
}

let arr = [{name:'zhangsan'},{name:'lisi'},{name:'lisi},{name:'wangwu'}]

//其中arr为要去重的对象数组,name:为要去重依据的属性名。
let newArr = arrUnique(arr,'name')

2.使用filter+findIndex实现

function arrUnique(arr,prop){
       return arr.filter(function(item,index,self){
             return self.findIndex(el=>el[prop]==item[prop])===index
        })
}

let arr = [{name:'zhangsan'},{name:'lisi'},{name:'lisi},{name:'wangwu'}]

//其中arr为要去重的对象数组,name:为要去重依据的属性名。
let newArr = arrUnique(arr,'name')

3.使用filter+new Map(has+set)实现

function arrUnique(arr,prop){
    const map = new Map()
    //has方法:判断map是否有这个属性,set方法:为这个属性设置值
    return arr.filter((el)=>{!map.has(prop)&&map.set(prop,1)})
}

let arr = [{name:'zhangsan'},{name:'lisi'},{name:'lisi},{name:'wangwu'}]

//其中arr为要去重的对象数组,name:为要去重依据的属性名。
let newArr = arrUnique(arr,'name')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值