【发布时间】:2019-07-20 22:02:46
【问题描述】:
我有一个对象数组,其中每个对象都有一个 id 键。 其中一些对象有重复出现的 id,我想删除那些重复出现的对象。
例如:
let array = [{
"id": "123",
"country": "Brazil",
"address": "xyz abc",
"date": "Dec 17, 1995, 9:45:17 PM"
},
{
"id": "443",
"country": "Russia",
"address": "qwd qwd qwdqw",
"date": "Dec 17, 1965, 9:45:17 PM"
},
{
"id": "123",
"country": "Canada",
"address": "ktktkt",
"date": "Dec 17, 1925, 9:45:17 PM"
},
.
.
.
{}]
在上面的数组中,由于索引 0 和索引 2 共享相同的 id 键值,我想将它们从数组中完全删除。
- 我正在寻找复杂度最佳的代码,只有线性 (O(n))。
【问题讨论】:
-
这不是
reduce的用例。这可能是filter的一个用例,但实际上,您只需要一个简单的循环来跟踪您之前在Map(或对象)中临时看到的给定ID 的对象。你最好的选择是做你的研究,search 以获取有关 SO 的相关主题,然后试一试。 如果您在进行更多研究和搜索后遇到困难并且无法摆脱困境,请发布您的尝试minimal reproducible example,并具体说明您卡在哪里。人们会很乐意提供帮助。 -
关于如何做到这一点的答案有几十个问题。
-
是我遗漏了什么还是你打错字了?线性复杂度由
O(n)而不是log(O)表示(我什至不知道如何阅读,也不知道它是什么)。 -
Bardr - 你是对的,一些绅士(或女人!哈哈)为我勇敢地编辑了它,谢谢!
标签: javascript