1
私が考えることができる唯一の方法は、レーティングに基づいた最初のソートの後で、同じレーティングを持つすべての名前をグループ化し、数量に基づいてそのグループをソートします。それは少し複雑で、私はそれを行うための関数を実装する必要があると思います。それを行うより短い方法はありますか?ありがとう。2つの配列の順序に基づいて3つの配列をソートする方法。 Swift
// **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.
あなたは私が提供した例を解決することができ、よりコードを提供するために、気にしませんか?ありがとう。 –
@PakHoCheung '[Entry]'型の単一の配列を作るだけです。 'Entry'構造体が' Comparable'プロトコルに準拠するようにすれば、かなり簡単にそれらをソートすることができます。 –
OK。早急にライブラリを見てみましょう。以前はstructを使用していませんでした。 –