目的
过滤掉数组里面指定属性相同的元素(一个对象)
/**
* 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'))
网友评论