通过嵌套属性对多维数组进行排序

时间:2018-01-12 00:17:05

标签: arrays swift multidimensional-array

我给出了一系列分数,并希望根据分数生成一个梯子。每个得分元素都有一个带有团队名称的数组,胜利和积分。我希望产生一个梯形阵列,其中最多的点位于阵列的顶部或第一位:

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"]]

1 个答案:

答案 0 :(得分:0)

虽然我同意评论中提到的观点,即数组数组远非理想的数据结构,但我仍然认为如何对这些数据进行排序是一个有效的问题:

let sortedScores = scores.sorted { Int($0[2])! > Int($1[2])! }

该代码与注释中提到的解决方案类似,但points值被比较为字符串,而不是您想要的;如果您的第4个条目的wins值为27,那么它最终会成为结果中的第一个分数,因为"27" > "185"。通过将字符串转换为Ints,比较按预期工作(185 > 27