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

Sort list of lists by second element in Swift?

我在 swift 中有这样的东西:

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

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

我该怎么做?

谢谢!

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

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

您可以使用last、转换和默认值来排序

users.sort(by: { [=10=].last as? Int ?? Int.min > .last as? Int ?? Int.min })

我不知道你为什么要使用混合了字符串和整数的数组,也许可以考虑使用像我的示例中那样的结构。 否则其他人已经发布了工作解决方案。

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: {[=10=].prio > .prio})