rails排序的二维数组不起作用

时间:2014-07-29 22:46:14

标签: ruby-on-rails ruby sorting

我有一个2d数组,它应该是基于点数的用户排名。我首先启动它:

ranked_user = []

然后我做了一些积分计算并将一些东西推入数组:

ranked_user.push([user.id, user.username, user.location, points])

导致

=> [[8, "Jhonny", "Berlin", 11], [9, "Ben", "Hamburg", 3], [10, "Hugo", "Munich", 6]]

现在我想根据第4个值(点数)对该数组进行排序,以显示排名。 我尝试了两件事:

ranked_user.sort_by{|k|k[3]}

ranked_user.sort { |a, b| b[3] <=> a[3] }

我希望如此:

=> [[9, "Ben", "Hamburg", 3], [10, "Hugo", "Munich", 6], [8, "Jhonny", "Berlin", 11]]

但数组根本没有排序。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

您需要使用sort_by!来修改原始数组。

答案 1 :(得分:2)

加入Morgan Laco的回答:

如果你这样做:

ranked_user.sort_by{|k|k[3]}

然后ranked_user仍然是无序的。只订购退货。

因此,为了更改ranked_user,您必须执行以下任一操作:

ranked_user = ranked_user.sort_by{|k|k[3]}
ranked_user.sort_by!{|k|k[3]}