如果要排序的元素是数组,先按数组的第一个元素升序排列,如果第一个元素值相同按第二个元素降序排,怎么写? 比如: [[2, 1], [1, 1], [2, 2], [1, 2]] 要排序成: [[1, 2], [1, 1], [2, 2], [2, 1]]
直接翻译就是这样了吧
arrs.sort { |arr1, arr2| arr1.first == arr2.first ? (arr2.last <=> arr1.last) : (arr1.first <=> arr2.first) }
这样搞不知道行不行
arrs.sort { |arr1, arr2| (arr1.first <=> arr2.first) + (arr2.last <=> arr1.last) }
谢谢!你是怎么知道这个用法的。
arrs.sort { |arr1, arr2| (arr1.first <=> arr2.first) + (arr2.last <=> arr1.last) } 这种方式不行
arrs.sort { |arr1, arr2| arr2.last <=> arr1.last}.sort {|arr1, arr2| arr1.first <=> arr2.first}
按字面意思写就好了
array.sort_by(&:second).reverse.sort_by(&:first)
a.sort_by{|e| [e.first, -e.last]}
谢谢
可以简单点: a.sort_by{|(x, y)| [x, -y]}
a.sort_by{|(x, y)| [x, -y]}