Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript快速查找数据结构?_Javascript - Fatal编程技术网

JavaScript快速查找数据结构?

JavaScript快速查找数据结构?,javascript,Javascript,我有一个109582个按字母顺序排列的字符串数组。我的web应用程序将对数组中是否包含给定字符串进行大量快速检查。显然,我可以创建一个哈希表或二叉树的包装器类,但是否有任何本机JavaScript数据结构可以替代。制作字典对象 dict = { string1: 1, string2: 1, etc 它保证提供O(1)查找时间。有各种合适的结构和方法,请参见下面的执行方式 排列 用于循环 用于循环(反向) 数组。包括(目标) 设置 set.has(目标) 对象 obj.has

我有一个109582个按字母顺序排列的字符串数组。我的web应用程序将对数组中是否包含给定字符串进行大量快速检查。显然,我可以创建一个哈希表或二叉树的包装器类,但是否有任何本机JavaScript数据结构可以替代。制作字典对象

dict = {
  string1: 1,
  string2: 1,
etc

它保证提供O(1)查找时间。

有各种合适的结构和方法,请参见下面的执行方式

排列
  • 用于
    循环
  • 用于循环(反向)
  • 数组。包括(目标)
设置
  • set.has(目标)
对象
  • obj.hasOwnProperty(目标)
  • obj中的目标[num,true])) 目标值=9000 //排列 功能(arr、目标){ 常数len=arr.length for(设i=0;i0;i--){ 如果(arr[i]==目标){ 返回真值 } } 返回错误 } 功能包括(arr、目标){ 返回arr.includes(目标) } //设置 函数isTargetThereSet(数字集,目标){ 返回编号set.has(目标) } //反对 函数IsTargetTheHasOwnProperty(对象、目标){ 返回对象hasOwnProperty(目标) } 功能(目标、目标){ obj中的返回目标 } 功能isTargetThereSelectKey(对象,目标){ 返回obj[目标] } //地图 函数ISTargetTherMap(数字映射,目标){ 返回编号映射has(目标)
    }也许是二进制搜索?这绝对是最快的。if(dict[string])大O符号不是唯一的问题。墙时间的测量对我们很重要。我建议用运算时间来测试是否使用一个hash/对象更好,或者他是否至少应该为每个第一个字母创建一个hash。实际上,没有任何东西可以保证
    O(1)
    查找时间。没错,大多数实现确实使用对象的哈希映射,但它们也可以选择其他任何东西。这会比使用数组更快吗?