[英]How to sort array based on multiple fields?
我有以下數組
var data = [
{
"orig": "FRA",
"dest": "DRS",
"ioi": "O",
"dow": "4",
"accessRight": "Private",
"priority": "6"},
{
"orig": "FRA",
"dest": "IBZ",
"ioi": "O",
"dow": "257",
"accessRight": "Global",
"priority": "6"},
{
"orig": "FRA",
"dest": "AGP",
"ioi": "I",
"dow": "1",
"accessRight": "Private",
"priority": "7"},
{
"orig": "FRA",
"dest": "AGP",
"ioi": "I",
"dow": "5",
"accessRight": "Global",
"priority": "20"},
{
"orig": "FRA",
"dest": "IBZ",
"ioi": "I",
"dow": "1234567",
"accessRight": "Private",
"priority": "20"}
];
我想以這樣一種方式對數據進行排序,即在對“accessRight”以外的任何列進行排序后,我得到的結果是數組在開始時具有 accessRight = Private,而在結束時具有其他?
我嘗試使用它:
data.sort(function(a,b){
return b['accessRight'].localeCompare(a['accessRight']) ||
Math.round(parseFloat(b['priority'])) <=
Math.round(parseFloat(a['priority']))
? 1
: -1;
})
var data = [ { "orig": "FRA", "dest": "DRS", "ioi": "O", "dow": "4", "accessRight": "Private", "priority": "6"}, { "orig": "FRA", "dest": "IBZ", "ioi": "O", "dow": "257", "accessRight": "Global", "priority": "6"}, { "orig": "FRA", "dest": "AGP", "ioi": "I", "dow": "1", "accessRight": "Private", "priority": "7"}, { "orig": "FRA", "dest": "AGP", "ioi": "I", "dow": "5", "accessRight": "Global", "priority": "20"}, { "orig": "FRA", "dest": "IBZ", "ioi": "I", "dow": "1234567", "accessRight": "Private", "priority": "20"} ]; let result = data.sort((a,b) =>{ if(a.accessRight=='Private'){ return -1 } return 1 //return a.accessRight.localeCompare(b.accessRight) }) console.log(result)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.