Javascript 如何按用户对2个AJAX请求创建的连接数组进行排序';什么是搜索词?
我有一个输入框,用户可以在其中键入搜索词Javascript 如何按用户对2个AJAX请求创建的连接数组进行排序';什么是搜索词?,javascript,jquery,json,ajax,sorting,Javascript,Jquery,Json,Ajax,Sorting,我有一个输入框,用户可以在其中键入搜索词 <input type="text" class="searchbox" placeholder="Search here"> 数组包含基于在每个map()中创建的结构的对象。 这些对象具有属性标签和值 您正在查找不存在的a[1]和b[1],这就是您未定义的原因 因此,排序应该查看这些对象的属性并比较实际值,而不是indexOf() 在回答“规范化案例以优化排序”时忘了提及,但在代码中应该清楚这并不是很相关,但由于您之前提供了帮助,您是否碰
<input type="text" class="searchbox" placeholder="Search here">
数组包含基于在每个
map()
中创建的结构的对象。
这些对象具有属性标签
和值
您正在查找不存在的a[1]
和b[1]
,这就是您未定义的原因
因此,排序应该查看这些对象的属性并比较实际值,而不是indexOf()
在回答“规范化案例以优化排序”时忘了提及,但在代码中应该清楚这并不是很相关,但由于您之前提供了帮助,您是否碰巧知道此列表更新不够频繁的原因?例如,如果您键入“external”,您会得到一个很好的列表,但如果您通过在查询中添加“Sunshine”来进一步缩小搜索范围,则建议根本不会改变。可疑api是关于空间编码方式的特定信息。检查文档。是否在可在浏览器开发工具网络中检查的响应中返回“未找到电影”此数组来自何处?需要更多的细节。(我看到你删除了所有代码)
var results1 = [];
var results2 = [];
var combine = [];
$(".searchbox").autocomplete({
source: function(request, response) {
$.when(GetGames(request), GetMovies(request)
).done(function(){
combine = results2.concat(results1);
/*
combine.sort(function(a, b){
return b[1].indexOf(request.term) - a[1].indexOf(request.term);
});
*/
response(combine);
}
)
}
});
function GetMovies(request) {
return $.ajax({
'url': 'http://www.omdbapi.com/?s=' +
request.term +
'&type=movie&r=json',
'dataType': 'json',
'success': function(data) {
var list = data.Search;
results1 = $.map(list, function(v,i){
return {
label: v.Title + ' (' + v.Year + ')',
value: v.Title
};
})
}
});
}
function GetGames(request) {
return $.ajax({
type: "POST",
url: "php/phpscript.php?search=" + request.term,
dataType: "xml",
success: function(xmlResponse) {
results2 = $("Game", xmlResponse).map(function() {
return {
value: $("GameTitle", this).text() + ", G " + ($.trim($("ReleaseDate", this).text()) || "(unknown date)")
};
}).get()
}
});
}
combine.sort(function(a, b){
return b.value.toLowerCase() > a.value.toLowerCase();
});