数组去重

306 阅读1分钟

对象数组根据属性去重

1. Map filter

const removal = (arr,attr) =>{
    const res = new Map()
    return arr.filter((item)=>{
        return !res.has(item[attr]) && res.set(item[attr],1)
    })
  }

2. Set filter

const removal = (arr,attr) =>{
    const res = new Set()
    return arr.filter((item)=>{
        return !res.has(item[attr]) && res.add(item[attr],1)
    })
  }

3. filter map

去重数组或者对象数组

const removal=(arr,attr)=>{
    return arr.filter((item,index)=>{
        let temp = [];
        if(attr){
            arr.map((item) => {
                return temp.push(item[attr])
            })
            return temp.lastIndexOf(item[attr]) == index
            // 要后面的 去除前面的
        }
        else{
            return arr.indexOf(item) == index                
        } 
    })
  }

4. reduce

 const removal = (arr,attr) =>{
    const hash = {};
    return arr.reduce((item, next) => {
      hash[next[attr]] ? "" : hash[next[attr]] = true && item.push(next);
      return item
    },[])
  }

5. reduceRight (倒序)

 const removal = (arr,attr) =>{
    const hash = {};
    return arr.reduceRight((item, next) => {
      hash[next[attr]] ? "" : hash[next[attr]] = true && item.push(next);
      return item
    },[])
  }