假设我有一个对象:
var names = ["john", "jane", "al", "mary", "zane" ... 1000+ Names]
我想创建一个自动建议来搜索这些名称。
最有效的方法是什么?我读过创建一个 trie 或三元数据结构是最好的,但我不确定如何在 js 中实现这些。
有什么想法吗?
最佳答案
trie 将是一个很好的解决方案。您的数据集看起来像这样:
{"j":
{"a":
["jacob", "jane", ..],
{"o":
["john", "joesph", ..],
..
};
您将逐个字符地索引尽可能深的层次(以便最内层的数组可能有 20-30 个条目。)然后对存储在最内层的数组进行简单搜索。
您可以通过遍历名称集合来生成它,然后检查特定索引条目是否存在。如果是,再往下一层,检查下一个字符是否存在等等,直到到达最深的一层。然后插入到数组中,如果没有则开始一个新数组。如果在添加新名称时 Angular 色级别不存在,则创建它。那么您可能希望缓存最终结果,而不是在每次请求时都重新生成它。
关于javascript - 什么是最好的 javascript 自动建议搜索算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5111852/