[英]Javascript: Sort multi dimensional Array based on first arrays sort results
[英]Implement multi fields sort on search results in javascript
我有一系列類似以下對象的對象:[{city:“阿姆斯特丹”,國家:“荷蘭”},{city:“ Norwalk”,國家:“美國”},{city:“ Norwalk”,國家:“美國國家”},{城市:“未知”,國家:“未知”}]
我想對結果進行排序,以便當用戶在搜索框中輸入第一個字母(例如“ 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;
}
});
但是它沒有按預期工作。 請幫助我解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.