运算符在Javascript中测试集合成员资格

Pao*_*olo 5 javascript membership collections comparison in-operator

我怎样才能有效地在Javascript中进行集合成员资格检查?我有一个可能很大的字符串数组,我需要验证给定的字符串是否是数组的成员.

最初我认为in运营商可以提供帮助,但在阅读Mozilla开发者网络上的文档后,我发现其目的不同.在Javascript中,它检查指定的属性是否在指定的对象中.

出于性能相关的原因,我更喜欢使用js内置,但是如果不存在这样的函数,我可能最终会做以下其中一项:

  1. 使用数组创建一个具有数组元素作为键的对象然后使用 in
  2. 迭代数组元素并逐项进行比较
  3. 实现二进制搜索

任何意见?还是更好的想法?

谢谢

Tom*_*ana 2

正如您将在这个问题中发现的那样,几乎每个框架都有一个功能,一些浏览器甚至本机实现了一个indexOf功能(但不是全部)。

似乎他们都是通过迭代数组来完成的,有些使用另一个方向(从末尾开始),因为它似乎更快。对于次线性算法,您可能需要通过对键进行二分搜索来实现某种哈希集。

可以在此处找到 HashSet 实现的示例。