是在JavaScript中设置哈希集合

Is Set a hashed collection in JavaScript?

本文关键字:哈希 集合 设置 JavaScript 是在      更新时间:2023-09-26

我在问自己这个问题Set是JavaScript中的哈希集合吗

例如,Set.prototype.has将迭代整个Set,还是其实现使用内部哈希表来定位集合中的项目?

ECMAScript 2015规范指出:

集合对象必须使用哈希表或其他机制来实现,这些机制平均提供的访问时间与集合中元素的数量次线性。

显然,他们不能强迫特定的JS引擎真正做到这一点,但在实践中,JS引擎会做正确的事情。

ES6规范不需要特定的实现,但它确实表明它应该比O(n)更好(因此比线性查找更好(。而且,由于Set对象的目的是高效地查找集合中的项,因此它肯定会使用某种高效的查找系统,如散列。

如果你想确定它是如何工作的,你必须查看Firefox或Chrome实现的开源代码。

您还可以对其进行基准测试,以证明查找速度不是O(n),而是更高效的速度。