Javascript 从2d阵列中选择大量选项的最佳自动完成功能?

Javascript 从2d阵列中选择大量选项的最佳自动完成功能?,javascript,jquery,jquery-ui,autocomplete,multidimensional-array,Javascript,Jquery,Jquery Ui,Autocomplete,Multidimensional Array,对于可用选项不超过1000个的字段,下拉列表似乎可以完成此任务。然而,我有两个数组,可以调情数万个,所以把它们放在组合框中对浏览器来说是个杀手。我的猜测是,最好是一个简单的文本输入,但具有自动完成功能。首先是从jQueryUI自动完成,但我发现它与2d数组不兼容,如: var fkOptionList = [[1, 'Orange'],[2, 'Banana'],[3, 'Coconut']] 因为我的数组是以这种方式编写的,所以我不想重写它们。也许你知道一个解决方法,或者一个更好的方法来处理

对于可用选项不超过1000个的字段,下拉列表似乎可以完成此任务。然而,我有两个数组,可以调情数万个,所以把它们放在组合框中对浏览器来说是个杀手。我的猜测是,最好是一个简单的文本输入,但具有自动完成功能。首先是从
jQueryUI
自动完成,但我发现它与2d数组不兼容,如:

var fkOptionList = [[1, 'Orange'],[2, 'Banana'],[3, 'Coconut']]
因为我的数组是以这种方式编写的,所以我不想重写它们。也许你知道一个解决方法,或者一个更好的方法来处理如此大量的选项?

假设你的意思是:

var fkOptionList = [[1,'Orange'],[2,'Banana'],[3,'Coconut']];

您可以使用映射函数(例如)将2d数组重写为必要的1d数组。在ajax加载的自动完成方面也投入了大量精力,因此,如果在服务器端更容易处理成1d数组,那么这可能是一个不错的选择。

不要害怕通过
映射或循环将其展平

myNewArray = [[1, 'Orange'],[2, 'Banana'],[3, 'Coconut']].map(function(el) {
    return el[1];
});

这对性能的影响可以忽略不计,特别是如果您使用函数库,如

[1]['Orange']
和示例数组中的其他元素未定义,使您的数组
[undefined,undefined,undefined]
您应该设置一个示例来显示问题,因为我在这里看到了几个问题。您的列表是否完全存储在客户端?您应该能够编写一个自定义搜索处理程序,该处理程序可以以任何格式接收您的数据。好的,但我打算完全这样做?看起来像您发现的,但下面提到的@Ixe方法是合适的。Lodash是另一种下划线实现。