我有以下数组:
[[1, 2], [44, 1], [18395, 3]]
我使用此代码获得的内容:
current_user.friends_products.where("units.primary_image_id IS NOT NULL").group_by{|u| u.creator_id}.map {|k,v| [k, v.length]}
我想按每个数组的第二个值从最大到最小排序数组。所以,这就是我想要实现的目标:
[[18395, 3], [1, 2], [44, 1]]
答案 0 :(得分:5)
使用#sort_by和第二个元素降序:
x = [[1, 2], [44, 1], [18395, 3]]
x.sort_by { |a, b| -b }
#=> [[18395, 3], [1, 2], [44, 1]]
答案 1 :(得分:3)
[[1, 2], [44, 1], [18395, 3]].sort_by(&:last).reverse
答案 2 :(得分:2)
您可以使用此Array#sort
块:
[[1, 2], [44, 1], [18395, 3]].sort { |a, b| b[1] <=> a[1] }
# => [[18395, 3], [1, 2], [44, 1]]
答案 3 :(得分:2)
arr =[[1, 2], [44, 1], [18395, 3]]
arr.sort_by{|x,y|y}.reverse
# => [[18395, 3], [1, 2], [44, 1]]