gpt4 book ai didi

arrays - 在 Swift 中使用两个参数对结构对象数组进行排序

转载 作者:行者123 更新时间:2023-11-28 10:51:05 24 4
gpt4 key购买 nike

我有以下代码:

struct MyData {
var company = String();
var score:Int;
}

let data = [
MyData(company: "smiths", score: 4 ),
MyData(company: "lukes", score: 4),
MyData(company: "lukes", score: 9)
]

extension MyData: CustomStringConvertible {
var description: String {
return "(\(company), \(score))"
}
}

data.sorted { ($0.company, $1.score) < ($1.company, $0.score) }
print(data)

我的输出是:

[(smiths, 4), (lukes, 4), (lukes, 9)]

但是,我希望它是相反的:

[(lukes, 9), (lukes, 4), (smiths, 4)]

有人可以告诉我我做错了什么吗?

最佳答案

您想按 company 升序排序,然后按 score 降序排序。

首先——如评论中所述——您必须将结果分配给一个新变量,print(data) 打印未排序的原始数组。

排序算法应该是

如果公司相等,则对分数降序排序,否则对公司进行升序排序

let sortedData = data.sorted { ($0.company == $1.company) ? $0.score > $1.score : $0.company < $1.company}
print(sortedData)

关于arrays - 在 Swift 中使用两个参数对结构对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46080161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com