Reputation: 1532
How could I sort the following associative array:
[
["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"]
]
to result in the following - sorted by TYPE:
[
["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"],
]
Thanks in advance!
Upvotes: 1
Views: 182
Reputation: 4363
Use 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)")
See also: Swift how to sort array of custom objects by property value
And sort
& sorted
: https://developer.apple.com/documentation/swift/array/2296801-sort
sort
: Sorts the collection in place.sorted
: Returns the elements of the sequence, sorted.Upvotes: 2