Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.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_Algorithm_Performance_Search - Fatal编程技术网

Javascript 更好的搜索算法可以提高性能吗?

Javascript 更好的搜索算法可以提高性能吗?,javascript,algorithm,performance,search,Javascript,Algorithm,Performance,Search,我在页面中显示学生列表,我将学生信息存储为id和名称为的对象 如果列表中有滚动条,我想添加搜索框来搜索学生 并根据搜索字符串更新学生列表 现在我正在迭代student对象数组并检查名称中搜索字符串的索引 是否有更好的算法来提高性能 //我的代码: 搜索=函数(数据、查询字符串) { var res=新数组(); 用于(stu输入数据){ if(stu.name.search(queryString)!=-1){ 再推(stu); } } 返回res; }您希望查找压缩空节点的trie数据结构、基

我在页面中显示学生列表,我将学生信息存储为id和名称为的对象

如果列表中有滚动条,我想添加搜索框来搜索学生

并根据搜索字符串更新学生列表

现在我正在迭代student对象数组并检查名称中搜索字符串的索引

是否有更好的算法来提高性能

//我的代码:

搜索=函数(数据、查询字符串) { var res=新数组(); 用于(stu输入数据){ if(stu.name.search(queryString)!=-1){ 再推(stu); } } 返回res;
}

您希望查找压缩空节点的trie数据结构、基数trie或临界位trie。您需要查找kart-trie,这是基数trie的一个特殊版本,其中一个节点中只有两条边。一般来说,trie适用于文本搜索算法,例如字典。我在phpclasses.org(karttrie)上用php实现了karttrie。欢迎您下载并使用它

您可以构建排序索引并使用二进制搜索。如果需要按多个条件(例如名称或ID)进行搜索,则可使用多个索引。实现起来比树更简单。

显示您当前的代码。除非这个列表中有成千上万的学生,否则这应该是相当快的。一些学生可能会在创建排序索引后添加索引。当然,如果插入新的学生,索引将必须更新。否则就不行了。