Сортировка многомерного ассоциативного массива по значению (SWIFT) - PullRequest
0 голосов
/ 19 ноября 2018

Как мне отсортировать следующий ассоциативный массив:

[
  ["name": "Zone A", "type": "1"], 
  ["name": "Zone B", "type": "2"], 
  ["name": "Zone C", "type": "1"],
  ["name": "Zone D", "type": "3"], 
  ["name": "Zone E", "type": "2"], 
  ["name": "Zone F", "type": "3"],
  ["name": "Zone G", "type": "1"], 
  ["name": "Zone H", "type": "2"]
]

, чтобы получить следующее - отсортировано по типу :

[
  ["name": "Zone A", "type": "1"], 
  ["name": "Zone C", "type": "1"],
  ["name": "Zone G", "type": "1"], 
  ["name": "Zone B", "type": "2"], 
  ["name": "Zone E", "type": "2"], 
  ["name": "Zone H", "type": "2"]
  ["name": "Zone D", "type": "3"],       
  ["name": "Zone F", "type": "3"],
] 

Заранее спасибо!

1 Ответ

0 голосов
/ 19 ноября 2018

Использование sort

var a = [
  ["name": "Zone A", "type": "1"], 
  ["name": "Zone B", "type": "2"], 
  ["name": "Zone C", "type": "1"],
  ["name": "Zone D", "type": "3"], 
  ["name": "Zone E", "type": "2"], 
  ["name": "Zone F", "type": "3"],
  ["name": "Zone G", "type": "1"], 
  ["name": "Zone H", "type": "2"]
]

a.sort { (v1, v2) -> Bool in
    return v1["type"]! < v2["type"]!
}

//or:
//a.sort { $0["type"]! < $1["type"]! }

print("\(a)")

См. Также: Swift, как сортировать массив пользовательских объектов по значению свойства

И sort & sorted: https://developer.apple.com/documentation/swift/array/2296801-sort

  • sort: сортирует коллекцию по месту.
  • sorted: возвращает отсортированные элементы последовательности.
...