【问题标题】:Swift 4 Sorting Multidimensional arraySwift 4 排序多维数组
【发布时间】:2018-10-06 13:51:00
【问题描述】:

对 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 排序。

【问题讨论】:

  • 您是要对每一列进行排序,还是要对行进行排序但保持行不变?您能否编辑您的问题并为您的示例数组提供预期的输出?
  • 希望对问题有所帮助

标签: arrays swift sorting multidimensional-array


【解决方案1】:

假设所有子数组都包含 6 个元素,您可以使用元组(符合 Comparable 到 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 函数的变体,但只能得到错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多