美文网首页
js 对象数组去重

js 对象数组去重

作者: 弹力盒 | 来源:发表于2021-08-02 09:20 被阅读0次

    目的

    过滤掉数组里面指定属性相同的元素(一个对象)

    /**
     * js 对象数组去重
     * 测试数据
    */
    const arr = [
      {
        id: 1,
        name: 'TL',
        job: 'web'
      },
      {
        id: 2,
        name: 'CH',
        job: 'teacher'
      },
      {
        id: 3,
        name: 'xx',
        job: 'web'
      },
      {
        id: 4,
        name: 'xx',
        job: 'other'
      }
    ]
    
    /**
     * 方法一:利用 filter 方法
     * indIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置(下标)
    */
    const filterAttr = (arr, attr = null) => {
      const r = arr.filter((element, index, self) => {
        return self.findIndex(el => el[attr] === element[attr]) === index
      })
      return r
    }
    console.log(filterAttr(arr, 'job'))
    
    /**
     * 方法二:利用 reduce 方法
     * 过滤相同属性函数(相同则取第一个)
    */
    const filterAttr = (arr, attr) => {
      const r = arr.reduce((prev, element) => {
        if (!prev.find(el => el[attr] === element[attr])) {
          prev.push(element)
        }
        return prev
      }, [])
      return r
    }
    console.log(filterAttr(arr, 'job'))
    

    相关文章

      网友评论

          本文标题:js 对象数组去重

          本文链接:https://www.haomeiwen.com/subject/kysypltx.html