简体   繁体   English

如何根据多个字段对数组进行排序?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM