Düşünebilmemin tek yolu, derecelendirmeye dayalı ilk sıralamadan sonra, aynı reytinge sahip olan tüm adları gruplandırıyorum ve o gruba miktar bazında sıralama yapıyorum. Biraz karmaşık ve sanırım bunu yapmak için bir işlev uygulamak zorundayım. Bunu yapmanın daha kısa bir yolu var mı? Teşekkürler.İki dizinin sırasına göre üç dizi nasıl sıralanır. 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.
sana verilen örnek çözebilir fazla koda sağlamak için sorun olur mu? Teşekkürler. –
@PakHoCheung Sadece bir çeşit ['Giriş]' türünü yapın. "Giriş" yapısının "Karşılaştırılabilir" protokolüne uygun olmasına izin verirseniz, bunları kolayca kolayca sıralayabilirsiniz. –
Tamam. Önce hızlı kütüphaneye bir göz atalım. Daha önce yapı kullanmamıştım. –