简体   繁体   中英

Sort Array of Dictionaries by Key Value and if keys are equals sort alphabetical order within itself

I have an Array of Dictionaries given in bellow;

{
      "result": [
           
            {
                "id": 9,
                "name": "AKILLI",
                "sequence": 1,
               
            {
                "id": 10,
                "name": "DİĞER YEDEK ",
                "sequence": 2,
            },
            {
                "id": 61,
                "name": "TELEFON",
                "sequence": 0,
            },
            {
                "id": 62,
                "name": "TABLET",
                "sequence": 0,
            }
     ]
     }

I want to sort this array using;

 self.currArray = currArray.sorted { $0.sequence < $1.sequence }

The result is;

 {
      "result": [
            {
                "id": 61,
                "name": "TELEFON",
                "sequence": 0,
            },
            {
                "id": 62,
                "name": "TABLET",
                "sequence": 0,
            },
            {
                "id": 9,
                "name": "AKILLI",
                "sequence": 1,
               
            {
                "id": 10,
                "name": "DİĞER YEDEK ",
                "sequence": 2,
            },
            
     ]
     }

Also ı want to sort using name when "sequence" is the same. And ı want to get;

{
  "result": [
        {
            "id": 62,
            "name": "TABLET",
            "sequence": 0,
        },
        {
            "id": 61,
            "name": "TELEFON",
            "sequence": 0,
        },
        {
            "id": 9,
            "name": "AKILLI",
            "sequence": 1,
           
        {
            "id": 10,
            "name": "DİĞER YEDEK ",
            "sequence": 2,
        },
        
 ]
 }

How to sort array using this two option together? Firstly ı want to sort array using "sequence" key if key is equals secondly sort "name" key.

There is a convenience syntax using tuples and you can sort in place

self.currArray.sort{ ($0.sequence, $0.name) < ($1.sequence, $1.name) }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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