0
我有一个如下对象的数组: [{city:“Amsterdam”,country:“Netherlands”},{city:“Norwalk”,country:“United States” }, {city:“Norwalk”,国家:“美国”},{城市:“未知”,国家:“未知”}]在javascript中搜索结果中实现多字段排序
我想实施搜索排序结果,用户输入第一个字母,例如“n”在搜索框中,它应该按以下排序顺序显示结果。 A),与“N” B),与“N” C)包含城市启动国家启动“N” d市)含有国家“N”
我想实现这样的事情
filteredData = gridData.filter(function (rowObj) {
if (!!filterText) {
//Filter records with some function.
return isSubstringIgnoreCase(filterText, rowObj.city) || isSubstringIgnoreCase(filterText, rowObj.country);
}
return true;
});
filteredData.sort(function(a,b) {
var cityA = a.city.toLowerCase(),
cityB = b.city.toLowerCase(),
countryA = a.country.toLowerCase(),
countryB = b.country.toLowerCase();
filterText = filterText.toLowerCase();
if(cityA.indexOf(filterText) < cityB.indexOf(filterText) || cityA.indexOf(filterText) < countryB.indexOf(filterText)) {
return -1;
} else if(cityA.indexOf(filterText) > cityB.indexOf(filterText) || cityA.indexOf(filterText) > countryB.indexOf(filterText)) {
return 1;
} else if(countryA.indexOf(filterText) < countryB.indexOf(filterText) || countryA.indexOf(filterText) < cityB.indexOf(filterText)){
return -1;
} else if(countryA.indexOf(filterText) > countryB.indexOf(filterText) || countryA.indexOf(filterText) > cityB.indexOf(filterText)){
return 1;
} else {
return 0;
}
});
但它没有按预期工作。请帮我解决这个问题。