Javascript 在非常大的数据集上选择列表搜索
目前,我在应用程序中选择了2,并且之前实现了对数据库的ajax调用,以根据用户输入的搜索查询获得较小的子集 但是,用户希望能够单击浏览器上的后退箭头,并再次自动运行查询(Select2目前没有出现这种情况)。我可以通过拉入整个数据集(超过18000个元素)并调用select2来实现这一点 问题在于,Select2在执行搜索时基本上在foreach中执行foreach(数据集中的foreach元素,遍历每个字符串并获取查询的索引-我理解这基本上是将字符串分解为一个字符数组,并逐个检查每个字符以查看是否找到组合)。因此,每当有人键入一个字符时,我们会看到18000多个操作,尽管大多数元素都作为选项被删除 有没有办法让Select2真正消除不匹配的选项(创建并绑定到临时数组或类似的东西)或执行二进制搜索而不是线性搜索?如果没有,Select2是否有其他替代方案可以实现二进制搜索而不是线性搜索,或者我需要创建自己的jQuery插件来实现这一点?在本1中,使用隐藏的select元素并克隆该元素以过滤输入。过滤通过以下方式完成:Javascript 在非常大的数据集上选择列表搜索,javascript,jquery,jquery-select2,Javascript,Jquery,Jquery Select2,目前,我在应用程序中选择了2,并且之前实现了对数据库的ajax调用,以根据用户输入的搜索查询获得较小的子集 但是,用户希望能够单击浏览器上的后退箭头,并再次自动运行查询(Select2目前没有出现这种情况)。我可以通过拉入整个数据集(超过18000个元素)并调用select2来实现这一点 问题在于,Select2在执行搜索时基本上在foreach中执行foreach(数据集中的foreach元素,遍历每个字符串并获取查询的索引-我理解这基本上是将字符串分解为一个字符数组,并逐个检查每个字符以查看
for (var i = 0; i < that.selector.options.length; i++) {
if (re.test(that.selector.options[i].text)) {
sclone.add(new Option(that.selector.options[i].text, i));
}
}
for(var i=0;i
其中,re
是从位于选择克隆上方的输入字段创建的RegExp
也许这是个玩的好主意
第一个选择器中使用的语言是荷兰语,但我认为这不应该妨碍这个想法