高效的Javascript数组查找

Efficient Javascript Array Lookup

本文关键字:查找 数组 Javascript 高效      更新时间:2023-09-26

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

编辑:我想我要找的是等效的一个集在c++中,我可以只是检查,看看我给的值是否已经存在于集。

让它成为一个简单的js对象,而不是一个数组。

var whitelist = {
  "string1":true,
  "string2":true
}

然后你可以检查if(whitelist[str])是否可用

或者使用if(str in whitelist)

我预计第一个会有稍微好一点的性能(我还没有验证),但第二个更具可读性,并且使目的更明确。

对数组进行排序,使用二进制查找。

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

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