美文网首页
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