我有一个二维数组(Range<String.Index>)
var arrayToSort = [
[14..<20, 10..<29, 13..<21],
[7..<11, 1..<5, 4..<8],
[30..<50, 40..<54, 32..<60]
]
我需要按升序排序,从二维数组的每个元素开始,第一个范围的索引,这样的数组
var sortedArray = [
[7..<11, 1..<5, 4..<8],
[14..<20, 10..<29, 13..<21],
[30..<50, 40..<54, 32..<60]
]
2条答案
按热度按时间1szpjjfi1#
若要根据每个数组元素中第一个范围的起始索引进行排序,请使用闭包调用
sort()
,该闭包将比较其两个参数中第一个范围的起始索引:?
的可选链接处理嵌套数组为空的情况。在这种情况下,$n.first?.startIndex
的值为nil
(对应的元素排在所有其他元素之前)。完全独立的示例:
Swift 4及更高版本的更新:
hsgswve42#
为解决该问题,请使用swift中引入的函数式编程:
NSRange的固定位置