[英]How to sort array based on multiple fields?
I have following array我有以下数组
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"}
];
I want to sort data in such a way that after sorting any column other than "accessRight", I get result as array having accessRight = Private in beginning and other at end?我想以这样一种方式对数据进行排序,即在对“accessRight”以外的任何列进行排序后,我得到的结果是数组在开始时具有 accessRight = Private,而在结束时具有其他?
I tried it using this:我尝试使用它:
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.