我正在尝试一个项目,要求我记录用户访问的每个唯一的 URL,目标是有一种方法来存储每个数组以保持它们的唯一性。
有没有有效的方法来做到这一点?显然,这在理论上可能是巨大的,如果它是一个数组,则可能有数万个条目,这是不行的 - 我该如何存储它们?
(我确实意识到这是模糊的,但即使你的答案是否定的,这也不可能或聪明,会有用:))
...如果它是一个数组,可能有数万个条目,这是不行的...
数组可以包含数万甚至数十万个元素。
Set
而不是数组,因为与数组上的线性查找时间相比,它提供了亚线性查找时间,并且为唯一值集提供了更好的语义..
这是构建一组一百万个唯一的随机数的示例:
const set = new Set();
console.time("Time to build the set");
while (set.size < 1_000_000) {
set.add(Math.random()); // Won't add duplicate elements
}
console.timeEnd("Time to build the set");
console.log(`The set contains ${set.size.toLocaleString()} unique otherwise-random numbers`);
对我来说,运行时间约为 200 毫秒。而我在几分钟后就放弃了使用数组的等效方法。