JavaScript快速查找数据结构?
我有一个109582个按字母顺序排列的字符串数组。我的web应用程序将对数组中是否包含给定字符串进行大量快速检查。显然,我可以创建一个哈希表或二叉树的包装器类,但是否有任何本机JavaScript数据结构可以替代。制作字典对象JavaScript快速查找数据结构?,javascript,Javascript,我有一个109582个按字母顺序排列的字符串数组。我的web应用程序将对数组中是否包含给定字符串进行大量快速检查。显然,我可以创建一个哈希表或二叉树的包装器类,但是否有任何本机JavaScript数据结构可以替代。制作字典对象 dict = { string1: 1, string2: 1, etc 它保证提供O(1)查找时间。有各种合适的结构和方法,请参见下面的执行方式 排列 用于循环 用于循环(反向) 数组。包括(目标) 设置 set.has(目标) 对象 obj.has
dict = {
string1: 1,
string2: 1,
etc
它保证提供O(1)查找时间。有各种合适的结构和方法,请参见下面的执行方式 排列
循环用于
用于循环(反向)
数组。包括(目标)
set.has(目标)
obj.hasOwnProperty(目标)
- obj中的目标[num,true]))
目标值=9000
//排列
功能(arr、目标){
常数len=arr.length
for(设i=0;i
0;i--){ 如果(arr[i]==目标){ 返回真值 } } 返回错误 } 功能包括(arr、目标){ 返回arr.includes(目标) } //设置 函数isTargetThereSet(数字集,目标){ 返回编号set.has(目标) } //反对 函数IsTargetTheHasOwnProperty(对象、目标){ 返回对象hasOwnProperty(目标) } 功能(目标、目标){ obj中的返回目标 } 功能isTargetThereSelectKey(对象,目标){ 返回obj[目标] } //地图 函数ISTargetTherMap(数字映射,目标){ 返回编号映射has(目标)
}也许是二进制搜索?这绝对是最快的。if(dict[string])大O符号不是唯一的问题。墙时间的测量对我们很重要。我建议用运算时间来测试是否使用一个hash/对象更好,或者他是否至少应该为每个第一个字母创建一个hash。实际上,没有任何东西可以保证
查找时间。没错,大多数实现确实使用对象的哈希映射,但它们也可以选择其他任何东西。这会比使用数组更快吗?O(1)