Swift 4多维数组排序

5

我对Swift还很陌生。我的一个多维数组有500条记录。

[10, 2, 4, 10, 23, 56]
[0, 12, 14, 20, 28, 42]
[0, 2, 4, 10, 26, 54]
[1, 24, 34, 40, 47, 51]
[1, 23, 24, 30, 33, 50]

这样我就会拥有

[0, 2, 4, 10, 26, 54]
[0, 12, 14, 20, 28, 42]
[1, 23, 24, 30, 33, 50]
[1, 24, 34, 40, 47, 51]
[10, 2, 4, 10, 23, 56]

对于个人记录类型,我很不错。
但是当查看500条记录时,为了将记录按第一列排序,我使用了arr.sort { $0[0] < $1[0] }。虽然这很好用,但我需要将其扩展到第2、3、4、5、6列。我希望能够按列1、2、3、4、5、6的顺序进行排序。


你是想对每一列进行排序,还是想对行进行排序但保持行不变?你能否编辑你的问题并给出样本数组的预期输出? - vacawama
希望将“Hope change to question”转换为问题会有所帮助。 - graham4d
1个回答

4
假设所有子数组都包含6个元素,您可以使用一个元组(符合6元性的比较)来对数组进行排序:
let array = [[10, 2, 4, 10, 23, 56],
             [0, 12, 14, 20, 28, 42],
             [0, 2, 4, 10, 26, 54],
             [1, 24, 34, 40, 47, 51],
             [1, 23, 24, 30, 33, 50]]

let sorted = array.sorted(by: {
     ($0[0],$0[1],$0[2],$0[3],$0[4],$0[5]) < ($1[0],$1[1],$1[2],$1[3],$1[4],$1[5])
})
print(sorted) // [[0, 2, 4, 10, 26, 54],
              //  [0, 12, 14, 20, 28, 42],    
              //  [1, 23, 24, 30, 33, 50], 
              //  [1, 24, 34, 40, 47, 51],
              //  [10, 2, 4, 10, 23, 56]]

谢谢Leo,这个简单的方法太棒了。之前我尝试过不同的sorted函数的变体,但总是出错。 - graham4d

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接