代码之家  ›  专栏  ›  技术社区  ›  graham4d

Swift 4排序多维数组

  •  5
  • graham4d  · 技术社区  · 8 年前

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

    1 回复  |  直到 8 年前
        1
  •  3
  •   Leo Dabus    4 年前

    假设所有子数组都包含6个元素,则可以使用元组(与6的arity相当)对数组进行排序:

    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]]