高效的Javascript数组查找

高效的Javascript数组查找,javascript,performance,Javascript,Performance,如果我有一个字符串白名单,我想检查用户输入到javascript程序中的所有内容,那么最有效的方法是什么?我可以有一个数组并循环遍历它,直到找到匹配项,但这是O(N)。有没有更好的方法,不涉及任何类型的键值查找,只是检查该值是否存在 编辑:我想我所寻找的是一个C++中的集合,我可以检查一下是否已经给定了一个值。 排序数组,使用二进制搜索查找。 或 创建一个键为项目的对象,并使用哈希查找白名单[value]!=未定义的我想您会发现键值查找在性能上几乎与没有值的某种set实现相同。(许多标准库实际上

如果我有一个字符串白名单,我想检查用户输入到javascript程序中的所有内容,那么最有效的方法是什么?我可以有一个数组并循环遍历它,直到找到匹配项,但这是O(N)。有没有更好的方法,不涉及任何类型的键值查找,只是检查该值是否存在


<>编辑:我想我所寻找的是一个C++中的集合,我可以检查一下是否已经给定了一个值。

排序数组,使用二进制搜索查找。 或


创建一个键为项目的对象,并使用哈希查找白名单[value]!=未定义的

我想您会发现键值查找在性能上几乎与没有值的某种set实现相同。(许多标准库实际上只是使用映射实现一个集合)

只需将其设置为一个简单的js对象,而不是数组

var whitelist = {
  "string1":true,
  "string2":true
}
然后你可以只检查
if(白名单[str])
来检查它是否可用

或者使用
if(白名单中的str)


我希望第一个版本的性能稍好一些(我还没有验证),但第二个版本更具可读性,目的也更明确。因此,您可以选择哪个更适合。

重复:而且:这不是这些问题的直接重复,因为答案是不使用数组,答案是使用对象。FWIW的可能重复,我相当肯定在大多数引擎中第一次检查速度更快。我同意,这就是为什么我把它放在第一位,但第二个更具可读性。编辑以反映这一点。