【问题标题】:How to sort array of dictionary when value is same?值相同时如何对字典数组进行排序?
【发布时间】:2017-02-28 04:07:16
【问题描述】:

我知道如何通过键对 nsdictionary 数组进行排序。但是对我来说出现的问题是,当键的值相同时,如何在它们之间进行排序,比如用另一个键?

例如

[{
key1 = 2;
key2 = A;
},
{
key1 = 1;
key2 = D;
},
{
key1 = 1;
key2 = E;
},
{
key1 = 1;
key2 = C;
}]

当我按key1排序时,3项将在顶部,key1=2字典将在底部。

在整个数组按key1排序后,我想按key2对这3个项目进行排序。基本上我的目标:

[{
key1 = 1;
key2 = C;
},
{
key1 = 1;
key2 = D;
},
{
key1 = 1;
key2 = E;
},
{
key1 = 2;
key2 = A;
}]

这是我按 key1 排序的代码:

sortedArr = [dataDict keysSortedByValueUsingComparator:
                     ^NSComparisonResult(NSDictionary* obj1, NSDictionary* obj2)
                     {
                         NSComparisonResult result = NSOrderedSame;
                         if(obj1["key1"] != nil && obj2["key1"]!=nil)
                         {
                             return [obj2["key1"] compare:obj1["key1"]];
                         }
                         else
                             return result;
                     }];

【问题讨论】:

  • 能否请您添加您使用的语言的标签!
  • 对不起。我添加了语言。
  • 哇,谁在没有正当理由的情况下投了反对票?投反对票的小仙女又回来了?
  • 您要对一个字典(代码)进行排序,还是要对一组字典(示例)进行排序?

标签: objective-c arrays sorting dictionary


【解决方案1】:

请试试这个,

        NSArray *arrActual = .....;

        NSSortDescriptor * sortKey1 = [NSSortDescriptor sortDescriptorWithKey:@"key1" ascending:YES];
        NSSortDescriptor * sortKey2 = [NSSortDescriptor sortDescriptorWithKey:@"key2" ascending:YES];

        NSArray *arrSorted = [arrActual sortedArrayUsingDescriptors:@[sortDate, sortName]];

希望对你有帮助:)

【讨论】:

  • 我的数据是字典而不是数组。
【解决方案2】:

斯威夫特

这确实是 Swift 派上用场的地方。我知道这不是您想要的答案,但这是 swift 数组的一项强大功能,如果您希望使用 .swift 而不是 .m,您可能希望在即将到来的课程中考虑它。

let sorted = allSongs.sorted(by: { (firstSong, secondSong) -> Bool in
    if let firstTitle = firstSong.title, let secondTitle = secondSong.title {
        return firstTitle < secondTitle
    }
    else {
        return false
    }
})

【讨论】:

    猜你喜欢
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    相关资源
    最近更新 更多