iSofia
iSofia

Reputation: 1532

Sorting of Multidimensional Associative Array by Value (SWIFT)

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

Answers (1)

shawn
shawn

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

Related Questions