arrays - 根据某些条件对对象数组进行排序

标签 arrays swift sorting

我有一个 Users 对象数组:

Class Users {
    var firstName:String!
    var lastName:String!
    var status:Int!

    override init(fn: String, ln: String, s: Int) {
        self.firstName = fn
        self.lastName = ln
        self.status = s
    }
}

var users:[Users] = [Users]()
users.append(Users(fn:"a", ln:"b", s:1))
users.append(Users(fn:"c", ln:"d", s:3))
users.append(Users(fn:"e", ln:"f", s:2))
users.append(Users(fn:"g", ln:"h", s:1))
users.append(Users(fn:"i", ln:"j", s:1))
users.append(Users(fn:"k", ln:"l", s:2))

我知道按状态对数组进行排序的方法,例如

users = users.sorted(by: {$0.status > $1.status})

但是,我如何根据状态对用户数组进行排序,其中 2 在顶部,然后是 3,在最后 1,即 [2,2,3,1,1,1]

最佳答案

考虑重构:

要构造的类:

struct User {
    var firstName:String!
    var lastName:String!
    var status:Status
}

状态枚举:

enum Status: Int {
    case online, busy, offline
}

人口:

var users: [User] = [
    User(firstName: "a", lastName: "b", status: .online),
    User(firstName: "c", lastName: "d", status: .offline),
    User(firstName: "e", lastName: "f", status: .busy),
    User(firstName: "g", lastName: "h", status: .online),
    User(firstName: "i", lastName: "j", status: .online),
    User(firstName: "k", lastName: "l", status: .busy)
]

排序:

users = users.sorted(by:{$0.status.rawValue < $1.status.rawValue })

users.forEach { print($0) }

输出:

User(firstName: a, lastName: b, status: .online)
User(firstName: g, lastName: h, status: .online)
User(firstName: i, lastName: j, status: .online)
User(firstName: e, lastName: f, status: .busy)
User(firstName: k, lastName: l, status: .busy)
User(firstName: c, lastName: d, status: .offline)

关于arrays - 根据某些条件对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47512540/

相关文章:

JAVA在二维数组中添加随机值(数组索引越界异常)

javascript - 使用 .each 从表创建字符串,如何在每行后添加换行符?

ios - Swift 弱引用混淆

iOS:我可以检测用户所在的国家/地区吗?

sorting - 对 SystemVerilog 关联数组进行排序的最佳方法?

javascript - 在 javascript/jquery 中将输入值添加到数组中的函数

javascript - Jquery:元素数组的事件监听器

ios - 如何使用 Alamofire multipart 在参数中发送数组

ios - 使用 Swift 对两个数组进行排序

c - 对文件 C 中的行进行排序