嗨,我有一个具有相同 UserId 的数组,我想删除相似的数组并只保留一个我该怎么做?
例子:
a=[
{userId:1,name:''},
{userId:2,name:''},
{userId:3,name:''},
{userId:1,name:''},
{userId:1,name:''}
]
转换:
a=[
{userId:1,name:''},
{userId:2,name:''},
{userId:3,name:''}
]
嗨,我有一个具有相同 UserId 的数组,我想删除相似的数组并只保留一个我该怎么做?
例子:
a=[
{userId:1,name:''},
{userId:2,name:''},
{userId:3,name:''},
{userId:1,name:''},
{userId:1,name:''}
]
转换:
a=[
{userId:1,name:''},
{userId:2,name:''},
{userId:3,name:''}
]
你可以使用过滤器:
a.filter((item, index, array) => {
const firstItemIndex = array.findIndex(innerItem => item.userId === innerItem.userId);
return firstItemIndex === index;
})
findIndex 将始终返回它找到的第一个元素的索引。然后它将忽略重复项。
我推荐 lodash uniqBy 函数https://lodash.com/docs/4.17.15#uniqBy
this.a = _.uniqBy(a, 'id');
这种代码的性能应该更好:
const keys = new Set<number>()
const result = []
for (const item of a) {
if (!keys.has(item.userId)) {
keys.add(item.userId)
result.push(item)
}
}