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

编辑:我想我正在寻找的是C++中的一个集合,在这里我可以检查是否给定的值已经存在于集合中。

最佳答案

只要使其成为一个简单的js对象而不是一个数组即可。

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

然后您只需检查if(whitelist[str])以检查其是否可用。

或使用if(str in whitelist)

我希望第一个具有更好的性能(我尚未验证),但是第二个更具可读性,目的明确。因此,您选择哪种更合适。

09-20 03:25