使用TypeScript删除数组中的重复项

使用TypeScript删除数组中的重复项,typescript,Typescript,嗨,我有一个具有相同用户ID的数组,我想删除相似的数组,只保留一个 我该怎么做 例如: 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:''} ] 我建议使用lodash uniqBy函数 您可以使用过滤器:

嗨,我有一个具有相同用户ID的数组,我想删除相似的数组,只保留一个 我该怎么做

例如:

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:''}
]

我建议使用lodash uniqBy函数

您可以使用过滤器:

a.filter((项目、索引、数组)=>{
const firstItemIndex=array.findIndex(innerItem=>item.userId==innerItem.userId);
返回firstItemIndex==索引;
})

findIndex将始终返回它找到的第一个元素的索引。然后,它将忽略重复项。

使用这种代码时,性能应该会更好:

const keys = new Set<number>()
const result = []
for (const item of a) {
    if (!keys.has(item.userId)) {
        keys.add(item.userId)
        result.push(item)
    }
}
const key=new Set()
常量结果=[]
用于(a的常数项){
如果(!keys.has(item.userId)){
keys.add(item.userId)
结果。推送(项目)
}
}
const keys = new Set<number>()
const result = []
for (const item of a) {
    if (!keys.has(item.userId)) {
        keys.add(item.userId)
        result.push(item)
    }
}