Сортировка 3 взаимосвязанных массива
Есть 3 взаимосвязанных массива. Данные подтягиваются с сайта (json), каждый раз при запуске порядок сортировки в массивах разный, но при этом данные в массивах соответствую друг другу, т.е код валюты в 1 массиве соответствует названию валюты во 2 массиве и стоимости валюты в третьем массиве
1 — Код валюты ["BRL", "GBP", "CNY", ...]
2 — Название валюты ["Бразильский реал", "Фунт стерлингов Соединенного королевства", "Китайский юань, ...]
3 — Стоимость валюты [14.0838, 101.369, 11.4177, ...]
Так как массивы взаимосвязаны никак не могу отсортировать алфавиту, например по названию валюты. Если отсортировать 1 массив, то данные во 2 и в 3 уже не будут соответствовать сортировке в 1 массиве и т.д.
Два массива я смог отсортировать, а вот как три?
Спасибо!
Ответы (1 шт):
Можно связать данные из массивов в объекты, тогда с ними будет проще работать
struct Currency {
var abbreviation: String
var name: String
var value: Double
}
let arr1 = ["BRL", "GBP", "CNY"]
let arr2 = ["Бразильский реал", "Фунт стерлингов Соединенного королевства", "Китайский юань"]
let arr3 = [14.0838, 101.369, 11.4177]
// map arrays
assert(arr1.count == arr2.count && arr2.count == arr3.count)
var currencies = [Currency]()
for i in 0..<arr1.count {
currencies.append(Currency(abbreviation: arr1[i], name: arr2[i], value: arr3[i]))
}
// test sorting
let sortedByAbbreviation = currencies.sorted { item1, item2 in
item1.abbreviation < item2.abbreviation
}
print(sortedByAbbreviation)
let sortedByName = currencies.sorted { item1, item2 in
item1.name < item2.name
}
print(sortedByName)
let sortedByValue = currencies.sorted { item1, item2 in
item1.value < item2.value
}
print(sortedByValue)