我很快就有了这样的东西:
var users = [[craig, 3], [bobbie, 6], [nygel, 3], [caroline, 8]]
,我想按列表中的第二个元素对列表进行排序(即顺序应为:[[caroline,8],[bobbie,6],[craig,3],[nygel,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})