我给出了一系列分数,并希望根据分数生成一个梯子。每个得分元素都有一个带有团队名称的数组,胜利和积分。我希望产生一个梯形阵列,其中最多的点位于阵列的顶部或第一位:
var scores = [["team1", "15", "167"], ["team2", "13", "185"], ["team3", "16", "180"]]
//scores = [[team, wins, points], [team, wins, points]]
print(scores) //prints the order of the array as above
// I want to sort by points and output: [["team2", "13", "185"], ["team3", "16", "180"], ["team1", "15", "167"]]
答案 0 :(得分:0)
虽然我同意评论中提到的观点,即数组数组远非理想的数据结构,但我仍然认为如何对这些数据进行排序是一个有效的问题:
let sortedScores = scores.sorted { Int($0[2])! > Int($1[2])! }
该代码与注释中提到的解决方案类似,但points
值被比较为字符串,而不是您想要的;如果您的第4个条目的wins
值为27
,那么它最终会成为结果中的第一个分数,因为"27" > "185"
。通过将字符串转换为Ints,比较按预期工作(185 > 27
)