首页 > 解决方案 > 按键值对字典数组进行排序,如果键相等,则按其自身的字母顺序排序

问题描述

我在下面给出了一系列字典;

{
      "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,
            }
     ]
     }

我想使用这个数组排序;

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

结果是;

 {
      "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,
            },
            
     ]
     }

当“序列”相同时,我也想使用名称进行排序。我想得到;

{
  "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,
        },
        
 ]
 }

如何一起使用这两个选项对数组进行排序?首先,如果键等于,我想使用“序列”键对数组进行排序,然后对“名称”键进行排序。

标签: iosarraysswiftsorting

解决方案


使用元组有一种方便的语法,您可以就地排序

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

推荐阅读