-1

嗨,我有一个具有相同 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:''}
]
4

3 回答 3

1

你可以使用过滤器:

    a.filter((item, index, array) => {
        const firstItemIndex = array.findIndex(innerItem => item.userId === innerItem.userId);
        return firstItemIndex === index;
    })

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

于 2020-10-23T13:56:47.977 回答
0

我推荐 lodash uniqBy 函数https://lodash.com/docs/4.17.15#uniqBy

this.a = _.uniqBy(a, 'id');
于 2020-10-23T13:45:26.707 回答
0

这种代码的性能应该更好:

const keys = new Set<number>()
const result = []
for (const item of a) {
    if (!keys.has(item.userId)) {
        keys.add(item.userId)
        result.push(item)
    }
}
于 2020-10-23T14:01:11.637 回答