在Swift中按第二个元素对列表列表进行排序?

时间:2020-04-01 07:36:12

标签: arrays swift list arraylist swiftui-list

我很快就有了这样的东西:

var users = [[craig, 3], [bobbie, 6], [nygel, 3], [caroline, 8]]

,我想按列表中的第二个元素对列表进行排序(即顺序应为:[[caroline,8],[bobbie,6],[craig,3],[nygel,3]]

我该怎么做?

谢谢!

3 个答案:

答案 0 :(得分:1)

users.sort(by: {$0[1] as? Int ?? 0 > $1[1] as? Int ?? 0})

//[caroline, 8], [bobbie, 6], [craig, 3], [nygel, 3]]

答案 1 :(得分:1)

您可以使用last,强制转换和默认值进行排序

users.sort(by: { $0.last as? Int ?? Int.min > $1.last as? Int ?? Int.min })

答案 2 :(得分:0)

我不知道您为什么使用混合了String和Int的Array,也许考虑使用示例中的结构。 否则其他人已经发布了可行的解决方案。

struct User{
    let name: String
    let prio: Int
    init(_ name:String, _ prio:Int) {
        self.name = name
        self.prio = prio
    }
}

var users: [User] = [User("craig", 3), User("bobbie", 6), User("nygel", 3), User("caroline", 8)]

users.sort(by: {$0.prio > $1.prio})