Swift stable multi-key sort with nil ordering
Swift
import Foundation
func sortRows(_ rows: [[String: String]], by keys: [String]) -> [[String: String]] {
rows.enumerated().sorted { lhs, rhs in
for key in keys {
let left = lhs.element[key], right = rhs.element[key]
if left == right { continue }
if let left { return right.map { left < $0 } ?? true }
return false
}
return lhs.offset < rhs.offset
}.map(\.element)
}