我有一个带有重复对象的数组,我想删除这些重复对象。但是我似乎找不到合适的解决方案。我在这里犯了什么错误?
对象如下。
{name: "login", text: "Login"}
{name: "navigation", text: "Navigation"}
{name: "landing", text: "Landing Page"}
{name: "login", text: "Login"}
{name: "navigation", text: "Navigation"}
{name: "landing", text: "Landing Page"}
下面是我的代码,其中items
包含对象数组。
this.subMenuItems = this.items.reduce((acc, current) => {
const x = acc.find(item => item.name === current.name);
if (!x) {
return acc.concat([current]);
} else {
return acc;
}
}, []);
您还可以参考items
变量
的Console.log的屏幕截图
4条答案
按热度按时间gdrx4gfi1#
这个函数将为
this.subMenuItems
分配一个只包含每个项的第一个示例的数组,因为indexOf
返回找到该对象的第一个索引。ymdaylpp2#
问题
您的代码的问题是
find
将始终返回一个定义的值,因为至少有一个对象满足条件(current
对象本身)溶液
其中一个解是@Issac给出的解,其时间复杂度和空间复杂度分别为
O(n^2)
和O(1)
。还有一个时间和空间复杂度分别为
O(n)
和O(n)
的解。axr492tv3#
请在下面找到一个可以返回重复项列表或删除重复项列表的函数。
可以通过两种方式调用它:
对于您的情况:
如果要获取重复项
7fyelxc54#