使用多个条件对二维数组进行排序

Fle*_*seo 2 ruby arrays sorting multidimensional-array

什么是最简单的ruby代码来对该表进行排序,以便在第一列上以升序排序,而在第二列中以降序排序

matrix = [ [1,1],
           [2,1],
           [2,4],
           [2,3],
           [2,2],
           [3,1],
           [4,2],
           [4,3],
           [4,4],
           [1,4],
           [1,3],
           [1,2],
           [3,2],
           [3,4],
           [3,3],
           [4,1] ]
Run Code Online (Sandbox Code Playgroud)

结果表应为:

[[1,4],
 [1,3],
 [1,2],
 [1,1],
 [2,4],
 [2,3],
 [2,2],
 [2,1],
 [3,4],
 [3,3],
 [3,2],
 [3,1],
 [4,4],
 [4,3],
 [4,2],
 [4,1] ]
Run Code Online (Sandbox Code Playgroud)

任何帮助,泰德

Ric*_*ber 5

matrix.sort_by {|e| [e[0], -e[1]]}
Run Code Online (Sandbox Code Playgroud)

我认为这是最简单的方法,但是根据文档,当键集很简单时它可能会非常昂贵。

  • 展开块参数:matrix.sort_by {| x,y | [x,-y]} (4认同)