我有一个项目名称数组,另一个项目价格。我想将价格从最小到最大排序,但是有适当的项目,价格在同一个索引。
例如: [9,4,1]& ["项目1","项目2","项目3"] - > [1,4,9]& ["项目3","项目2","项目1"]
我知道如何有效地为大型阵列做这件事吗?
答案 0 :(得分:1)
给出
let prices = [9, 4, 1]
let names = ["item 1", "item 2", "item 3"]
你可以
let sorted = zip(prices, names).sorted { $0.0 < $1.0 }
let sortedPrices = sorted.map { $0.0 } // [1, 4, 9]
let sortedNames = sorted.map { $0.1 } // ["item 3", "item 2", "item 1"]
您应该使用模型值。
let prices = [9, 4, 1]
let names = ["item 1", "item 2", "item 3"]
struct Item {
let name: String
let price: Int
}
let sortedItems = zip(names, prices).map(Item.init).sorted { $0.price < $1.price }
// [Item(name: "item 3", price: 1), Item(name: "item 2", price: 4), Item(name: "item 1", price: 9)]