【发布时间】:2016-07-14 10:57:19
【问题描述】:
我能想到的唯一方法是在第一次根据评分排序之后,我将所有具有相同评分的名称分组在一起,然后根据数量对该组进行排序。这有点复杂,我想我需要实现一个函数来做到这一点。有没有更短的方法来做到这一点?谢谢。
// **Expected result**
// sortedNameArray = ["b", "e", "a", "f", "c", "g", "d", "h"]
// sortedRatingArray = [ 5, 5, 4, 3, 3, 3, 2, 2 ]
// sortedQuantityArray = [ 4, 3, 3, 5, 3, 2, 4, 3 ]
let nameArray = ["a", "b", "c", "d", "e", "f", "g", "h"]
let ratingArray = [ 4, 5, 3, 2, 5, 3, 3, 2]
let quantityArray = [ 3, 4, 3, 4, 3, 5, 2, 3]
let firstNameArray = Array(zip(nameArray, ratingArray)).sort { $0.1 > $1.1 }.map { $0.0 }
let firstRatingArray = Array(zip(ratingArray, ratingArray)).sort { $0.1 > $1.1 }.map { $0.0 }
let firstQuantityArray = Array(zip(quantityArray, ratingArray)).sort { $0.1 > $1.1 }.map { $0.0 }
// first sorting based on rating
firstNameArray // = ["b", "e", "a", "c", "f", "g", "d", "h"]
firstRatingArray // = [5, 5, 4, 3, 3, 3, 2, 2]
firstQuantityArray // = [4, 3, 3, 3, 5, 2, 4, 3]
// second sorting based on quantity.
【问题讨论】:
标签: arrays swift sorting methods