高效的Javascript数组查找
Efficient Javascript Array Lookup
如果我有一个字符串白名单,我想检查用户输入到我的javascript程序中的所有内容,最有效的方法是什么?我可以有一个数组,循环遍历直到找到匹配项但这是O(N)有没有一种更好的方法不涉及任何键值查找,只检查值是否存在?
编辑:我想我要找的是等效的一个集在c++中,我可以只是检查,看看我给的值是否已经存在于集。
让它成为一个简单的js对象,而不是一个数组。
var whitelist = {
"string1":true,
"string2":true
}
然后你可以检查if(whitelist[str])
是否可用
或者使用if(str in whitelist)
。
我预计第一个会有稍微好一点的性能(我还没有验证),但第二个更具可读性,并且使目的更明确。
对数组进行排序,使用二进制查找。
或
创建一个键为项的对象,并使用哈希查找白名单[value] != undefined
我想你会发现键值查找在性能上几乎与某种没有值的集合实现相同。(许多标准库实际上只是使用map实现set)
相关文章:
- Lodash 从值数组中查找数组中的值
- 使用JS查找数组的平均值
- 查找数组javascript中包含的元素类型
- Undercore:查找数组中出现频率最高的对象
- 查找数组's按属性不存在于另一个数组中的对象
- 查找数组中项目包含子字符串的索引
- 按键查找数组中对象的索引
- 按链中的键查找数组元素
- 使用JavaScript查找数组中最近的日期
- 在Javascript中查找数组长度
- 正在查找数组中第一个匹配元素的索引
- Rhino 1.5 R5在查找数组差异时未正确评估JavaScript
- 查找数组值
- 如何在javascript中按属性查找数组中的对象
- 如何使用JavaScript查找数组中的最早日期
- 查找数组中最长的单词/字符串
- 如何查找数组中所有出现的元素的索引(Ramda.js方式)
- 查找数组中的下一个最高数字 - jquery
- 如何查找数组中另一个对象旁边的对象
- 按键查找数组中最接近的 2 个元素