【发布时间】:2021-07-19 07:34:25
【问题描述】:
鉴于此输入:
const set1 = new Set([10, "someText", {a: 1, b: 2}]);
const set2 = new Set([10, "someText", {a: 1, b: 2}]);
const set3 = new Set([5, "someText", {a: 3, b: 4}]);
const arr = [set1, set2, set3];
combineDupSets(arr);
想要的结果:
[
Set { 10, 'someText', { a: 1, b: 2 } },
Set { 5, 'someText', { a: 3, b: 4 } }
]
我正在编写一个函数来消除所有重复的集合,并且由于 Set() 在它是一个对象或集合本身时不会检查重复,所以我写了以下内容:
function combineDupSets(arr) {
const hold = [];
arr.forEach(set =>{
const copySet = [...set];
const stringify = JSON.stringify(copySet);
if(hold.indexOf(stringify) === -1) {
hold.push(stringify)
}
})
const end = hold.map(item => JSON.parse(item));
const res = end.map(item => item = new Set(item))
return res;
}
在这里,我必须使用 3 个大小为 O(n) 的数组来检查这一点,我只是想知道是否有任何其他可读的解决方案可以更有效地检查时间和空间复杂度?
谢谢
【问题讨论】:
-
两个集合何时相等?如果它们包含相同的元素?广告订单重要吗?
-
请添加想要的结果。
-
我想了解您为什么需要这种数据结构。
-
添加了想要的结果!广告顺序无关紧要
标签: javascript arrays duplicates set space-complexity