【发布时间】:2020-11-17 05:43:50
【问题描述】:
我有一个对象数组,看起来像(粗略的例子):
[{id:1, stuff:moreStuff}, {id:6, manyStuff,Stuffing}, {id:4, yayStuff, stuff}, {id:6, manyStuff, Stuffing}]
问题是在数组中,有几个重复的对象。到目前为止,我想到的当前解决方案是这样的:
const DuplicateCheck = []
const FinalResult = []
for (let i = 0; i < ArrayOfObjects.length; i++) {
let isPresent = false;
for (let j = 0; j < duplicateCheck.length; j++) {
if (ArrayOfObjects[i].id == duplicateCheck[j]) {
isPresent = true;
}
}
if (isPresent = false) {
DuplicateCheck.push(ArrayOfObjects[i].id
FinalResult.push(ArrayOfObjects[i]
}
}
现在在学习了大 O 之后,这似乎是解决这个问题的一种非常低效的方法。所以我的问题是,有没有更好、更有效的方法来解决这个问题?
【问题讨论】:
-
一种方法:排序到数组2,复制回来。如果数组已排序,则重复出现一个接一个,因此您只需要查看前一个值。 O ( n log n ) 排序 + O ( n ) 复制。如果你用谷歌搜索可能会有更好的方法,比如添加到哈希表并从中复制回来?
-
如果要将对象映射到
JSON字符串,请从中创建一个新的Set,从集合中创建一个新的Array,然后将现在唯一的元素映射回对象,O是什么? -
作为骗子,我没有因为结束问题而获得积分。你会知道,如果你阅读privileges 页面而不是带着你的偏见去。另外,你不是 OP @GirkovArpa,那你为什么还要回复呢?
-
@GirkovArpa:删除重复问题是一项社区服务,不会获得声望点或其他奖励。
标签: javascript arrays object duplicates big-o