什么是最好的自动建议搜索算法的JavaScript

dor*_*emi 7 javascript algorithm search data-structures

说我有一个对象:

var names = ["john", "jane", "al", "mary", "zane" ... 1000+ Names]
Run Code Online (Sandbox Code Playgroud)

我想创建一个自动建议来搜索这些名称.

这样做最有效的方法是什么?我读过创建trie或三元数据结构是最好的,但我不确定如何在js中实现这些.

有什么想法吗?

mel*_*okb 9

特里是一个很好的解决方案.您的数据集看起来像这样:

{"j":
    {"a":
        ["jacob", "jane", ..],
    {"o":
        ["john", "joesph", ..],
    ..
};
Run Code Online (Sandbox Code Playgroud)

您可以逐个字符地索引尽可能多的级别(因此最里面的数组可能有20-30个条目.)然后对存储在最内层的数组进行简单搜索.

您可以通过循环遍历您的名称集合来生成此项,然后检查特定索引条目是否存在.如果是这样,请向下走一层,检查下一个字符是否存在等,直到达到最深层.然后插入到数组中,或者如果没有数组则启动新数组.如果在添加新名称时不存在字符级别,则创建它.然后,您希望缓存最终结果,而不是在每个请求上重新生成它.

  • 我想知道是否存在性能上的差异,通过char索引数组或让每个trie节点都是一个静态的`array(27)`然后你可以通过字母索引访问.这将是一个有趣的测试,我的想法是一个声明为`[]`的数组可能被视为一个哈希表,在这种情况下你会有很多头脑.有趣的基准 (3认同)