gpt4 book ai didi

javascript - 如何删除在对象数组中多次出现的任何对象?

转载 作者:行者123 更新时间:2023-11-30 07:54:11 25 4
gpt4 key购买 nike

如果我有一个像这样的数组:

[
{
id: 1,
title: 'foo'
},
{
id: 2,
title: 'bar'
},
{
id: 3,
title: 'bat'
},
{
id: 4,
title: 'bantz'
},
{
id: 2,
title: 'bar'
},
{
id: 3,
title: 'bat'
}
]

我想返回一个数组,其中包含任何只出现一次的对象。因此,对于此示例,所需的输出将是:

[
{
id: 1,
title: 'foo'
},
{
id: 4,
title: 'bantz'
}
]

我尝试了几种不同的方法,我发现使用 reduce()indexOf() 来解决这个问题,比如 this解决方案,但由于某种原因它们不适用于对象。

如有任何帮助,我们将不胜感激。

最佳答案

您可以使用 Map 来避免必须一次又一次地查看数组,这会导致效率低下的 O(n²) 时间复杂度。这是O(n):

function getUniquesOnly(data) {
return Array.from(
data.reduce( (acc, o) => acc.set(o.id, acc.has(o.id) ? 0 : o), new Map),
(([k,v]) => v)
).filter( x => x );
}

var data = [
{
id: 1,
title: 'foo'
},
{
id: 2,
title: 'bar'
},
{
id: 3,
title: 'bat'
},
{
id: 4,
title: 'bantz'
},
{
id: 2,
title: 'bar'
},
{
id: 3,
title: 'bat'
}
];

console.log(getUniquesOnly(data));

关于javascript - 如何删除在对象数组中多次出现的任何对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44686078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com