在大型数组中搜索自动完成建议的有效方法

时间:2016-10-18 07:34:08

标签: javascript

我有一个带有输入字段的webapp,应根据ISO3166-2填写用户的区域。为了改善用户体验,我想让这个字段成为自动完成 - 用户开始输入,并获得建议。还有一个国家/地区,如果填写,将限制向所选国家/地区的地区建议的地区数量。

区域列表是一个非常大量的数据,其中包括世界上所有官方认可的国家的区域名称和代码,其占地面积约为250kB。

那些有相似经验的人,您会推荐以下哪种方式来实现它,以及为什么要达到最佳性能?

1)不要将整个区域列表发送到客户端,而是每次用户键入区域字段时对服务器发出请求(debounce it,ofcourse),所以我们寻找服务器端的建议但是有额外的往返;

2)使用网络工作者寻找建议;

3)smth else?

1 个答案:

答案 0 :(得分:0)

您可以使用关键数组作为区域名称(或者有点类似),然后根据逻辑从后端填充数组。

  1. 使用键入的关键字
  2. 二进制搜索数组
  3. 如果数据存在,则填充自动完成,或者从后端数据填充数组。
  4. 您必须自己编写代码来维护数组。

    否则,您可以通过使用类似Twitter预订的方式来节省您的时间,其中Bloodhound具有预取,智能缓存,快速查找和回填远程数据。

    以下是链接:https://github.com/twitter/typeahead.js