Javascript Algolia-使用autocomplete.js重构用于多索引搜索的代码

Javascript Algolia-使用autocomplete.js重构用于多索引搜索的代码,javascript,autocomplete,algolia,Javascript,Autocomplete,Algolia,我希望利用autocomplete.js连接多个索引。我觉得这很有帮助。我的问题是当我有两个以上的索引要搜索时会发生什么 目前在我们的项目中,我们将有30多个不同的索引需要搜索。显然,简单地一遍又一遍地复制粘贴代码是一件可怕的事情,但我想不出任何其他方法来实现这一点,然后就这么做 有没有其他方法可以规范化我的代码 这里有一个例子。想象一下,在这个例子中还有28个索引。你可以看到它很快就失去了控制 可以找到一个工作的JSFIDLE var client=algoliasearch('9G2RUKP

我希望利用autocomplete.js连接多个索引。我觉得这很有帮助。我的问题是当我有两个以上的索引要搜索时会发生什么

目前在我们的项目中,我们将有30多个不同的索引需要搜索。显然,简单地一遍又一遍地复制粘贴代码是一件可怕的事情,但我想不出任何其他方法来实现这一点,然后就这么做

有没有其他方法可以规范化我的代码

这里有一个例子。想象一下,在这个例子中还有28个索引。你可以看到它很快就失去了控制

可以找到一个工作的JSFIDLE

var client=algoliasearch('9G2RUKPPGE','8860a74c330efaf019818fcdd800126');
var SPR=client.initIndex('dev-SPR');
var SWG_SPR=client.initIndex('dev-SWG_SPR');
//在搜索输入时初始化自动完成(ID选择器必须匹配)
$(“#aa搜索输入”).autocomplete({hint:false}[
{
来源:$.fn.autocomplete.sources.hits(SPR{
命中率:15
}),
displayKey:'名称',
//呈现数据集时使用的模板哈希
模板:{
//用于呈现单个建议的“建议”模板函数
建议:功能(建议){
常量标记=`
${建议。_highlightResult.code.value}
可用数量:${suggestion.quantityAvailable.toLocaleString()}
${suggestion.description}
`;
返回“”+标记+“”;
},
空:功能(选项){
return“在当前选择中未找到任何结果”;
},
}
},
{
来源:$.fn.autocomplete.sources.hits(SWG_SPR{
命中率:15
}),
displayKey:'名称',
//呈现数据集时使用的模板哈希
模板:{
//用于呈现单个建议的“建议”模板函数
建议:功能(建议){
常量标记=`
${建议。_highlightResult.code.value}
可用数量:${suggestion.quantityAvailable.toLocaleString()}
${suggestion.description}
`;
返回“”+标记+“”;
},
空:功能(选项){
return“在当前选择中未找到任何结果”;
},
}
}
]).on('autocomplete:selected',函数(事件、建议、数据集){
window.location.href=window.location.origin+'/'+suggestion.url
});
此行:

$('#aa搜索输入')。自动完成({hint:false},[]…

最后一个参数是数组。为什么不能有一个函数,让给定的客户机索引数组执行所有这些
client.initIndex('dev-SPR')
,然后生成一个包含所有现在必须处理的对象的数组

用['dev-SPR','dev-SWG_SPR'…]调用该函数

因此,你最终会:

`$('#aa-search-input').autocomplete({ hint: false }, myNewFn(['dev-SPR','dev-SWG_SPR']))` 

除非这些对象与客户端索引不同…

我很感谢您的回复。我不太清楚我需要对您的回复做些什么,但这为我指明了一个最终奏效的方向。谢谢您的建议与Algolia支持建议的建议相同。这里有一个链接,可以回答相同的问题我在Distance.algolia.com上发了帖子。答案就在那里。好吧,好吧,所以我或多或少朝着正确的方向走了:)。希望它能帮助你。
`$('#aa-search-input').autocomplete({ hint: false }, myNewFn(['dev-SPR','dev-SWG_SPR']))`