Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails类的二维数组不起作用_Ruby On Rails_Ruby_Sorting - Fatal编程技术网

Ruby on rails rails类的二维数组不起作用

Ruby on rails rails类的二维数组不起作用,ruby-on-rails,ruby,sorting,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]] 现在我想根据第四个值(点数)对数

我有一个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]]
现在我想根据第四个值(点数)对数组进行排序,以显示排名。 我试过两件事:

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

但是数组并没有被排序


我做错了什么?

您需要使用
排序依据
以修改原始数组。

您需要使用
排序依据以修改原始数组。

只是为了补充Morgan Laco的答案:

如果您这样做:

ranked_user.sort_by{|k|k[3]}
然后,
排名的用户
仍然是无序的。只有退货订单

因此,要更改
排名用户
,您必须执行以下任一操作:

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

再补充一下Morgan Laco的回答:

如果您这样做:

ranked_user.sort_by{|k|k[3]}
然后,
排名的用户
仍然是无序的。只有退货订单

因此,要更改
排名用户
,您必须执行以下任一操作:

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

不知怎的,如果我把它放到一个each循环中,它确实会工作。如果我用简单的方式画出来,它仍然是未排序的。你是什么意思?您还必须记住,这不会改变数组,如果这是您想要的,您可以使用
sort\u by冰人是对的,只需使用排序方式!或者只是将排序后的数组保存到一个新的局部变量中。不知何故,如果我把它放入一个each循环中,它就可以工作了。如果我用简单的方式画出来,它仍然是未排序的。你是什么意思?您还必须记住,这不会改变数组,如果这是您想要的,您可以使用
sort\u by冰人是对的,只需使用排序方式!或者只是将排序后的数组保存到一个新的局部变量中。ty-猜这是我的错误-猜这是我的错误