数组对象去重

仅根据id判断

let arr1 = [
     {id: 1, name:'a'},
     {id: 2, name:'b'},
     {id: 1, name:'a'},
     {id: 3, name:'c'}]

let obj = {}
let res = arr1.reduce((prev, cur) => {
    obj[cur.id] ? '' : obj[cur.id] = true && prev.push(cur)
    return prev
},[])

姓名和性别相同才算重复 

 let arr2 = [
    {name:'a',sex:'male'},
    {name:'a',sex:'female'},
    {name:'b',sex:'male'},
    {name:'b',sex:'male'},
    {name:'a',sex:'male'}
]

let obj2 = {}
let res2 = arr2.reduce((prev, cur) => {
    obj2[Object.values(cur).join('')] ? '' : obj2[Object.values(cur).join('')]  = true && prev.push(cur)
    return prev
},[])

判断一个对象是否包含于另一个对象数组

function fn(arr, obj){
    let keys = Object.keys(obj)
    return arr.filter(item => {
        for(let i = 0; i < keys.length; i++){
            if(!item.hasOwnProperty(keys[i]) || item[keys[i]] != obj[keys[i]]) return false
        }
        return true
    })
}

arr = [
    {id: 1, name:'a'},
    {id: 2, name:'b'},
    {id: 3, name:'c'},
    {id: 2, name:'b', sex: 'male'},
    ]
let a = fn(arr, {id:2, name:'b'})
console.log(a)//[{id: 2, name: "b"},{id: 2, name: "b", sex: "male"}]

普通数组去重

let arr = [3,25,25,36,36,12] 
//方法1
let a = arr.filter((item,i) => arr.indexOf(item) == i)
//方法2
let b = [...new Set(arr)]
//方法3
let c = arr.reduce((prev, cur) =>{
    if(!prev.includes(cur)){
        prev.push(cur)
    }
    return prev
}, [])

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值