如何通过Points对Ruby中的数组进行排序?哪个更高效?

时间:2017-06-27 14:00:29

标签: ruby-on-rails ruby ruby-on-rails-5

我在Rails控制器中创建了以下哈希:

myObject = []
....
users.each do |u|
  myObject << {
    user_id: u.id,
    display_name: u.display_name,
    points: u.logs.sum(:points)
  }
end

如何按点对myObject进行排序,高&gt;低?

由于

1 个答案:

答案 0 :(得分:1)

只需在myObject阵列上使用sort_by!

myObject = []

users.sort_by { |user| user }.each do |u|
  myObject << {
    user_id: u.id,
    display_name: u.display_name,
    points: u.logs.sum(:points)
  }
end

myObject.sort_by! { |user| user[:points] }

如果您想以相反的顺序,请致电reverse!

myObject.sort_by! { |user| user[:points] }.reverse!

或者,您可以使用sort!

对其进行排序
myObject.sort! do |user1, user2|
  user2[:points] <=> user1[:points]
end

如果您想以相反的顺序更改比较对象的顺序,请执行以下操作:

myObject.sort! do |user1, user2|
  user1[:points] <=> user2[:points]
end