按 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})
我在 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})