簡體   English   中英

如何根據多個字段對數組進行排序?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM