在swift中以相同的方式对2个数组进行排序

时间:2017-04-22 18:27:06

标签: arrays swift

我有一个项目名称数组,另一个项目价格。我想将价格从最小到最大排序,但是有适当的项目,价格在同一个索引。

例如: [9,4,1]& ["项目1","项目2","项目3"] - > [1,4,9]& ["项目3","项目2","项目1"]

我知道如何有效地为大型阵列做这件事吗?

1 个答案:

答案 0 :(得分:1)

给出

let prices = [9, 4, 1]
let names = ["item 1", "item 2", "item 3"]

解决方案#1

你可以

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

解决方案#2

您应该使用模型值。

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