js 对象数组去重

目的

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

/**
 * 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'))
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容