2016-09-29 73 views

回答

2

ECMAScript的2015规范says在于:

集对象都必须用哈希表或其它机制,平均而言,提供可对集合中的元素的数量次线性访问时间来实现。

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

+0

感谢您的努力!我相信这很容易,但是值得与社区共同分享这个问题,因为知道'Set'可以是一个散列集合,当我们需要检查一个元素是否存在或其他常见操作 –

2

ES6 specification不需要特定的实现,但它确实表明它应该比O(n)更好(比线性查找好得多)。而且,由于Set对象的目的是查找Set中的项目,因此它肯定会使用某种有效的查找系统,如哈希。

如果您想知道它是如何工作的,那么您必须查看Firefox或Chrome实施的开源代码。

你也可以通过基准来证明查询速度不是O(n),而是比这更有效。