Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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,我在rails中有一个集合/数组,转换为json,如下所示: @collection = [{"order_number":"123","item":"Paper"},{"order_number":"567","item":"Ruler"},{"order_number":"344","item":"Pen"},{"order_number":"342","item":"Pencil"},{"order_number":"877","item":"Keyboard"}] @collectio

我在rails中有一个集合/数组,转换为json,如下所示:

@collection = [{"order_number":"123","item":"Paper"},{"order_number":"567","item":"Ruler"},{"order_number":"344","item":"Pen"},{"order_number":"342","item":"Pencil"},{"order_number":"877","item":"Keyboard"}]
@collection = [{"order_number":"123","item":"Paper"},{"order_number":"567","item":"Ruler"},{"order_number":"344","item":"Pen"},{"order_number":"877","item":"Keyboard"},{"order_number":"342","item":"Pencil"}]
@collection.last = @collection[3]
我想挑选订单号为“342”的商品,并将其放在该系列的最后一个位置,因此新系列如下所示:

@collection = [{"order_number":"123","item":"Paper"},{"order_number":"567","item":"Ruler"},{"order_number":"344","item":"Pen"},{"order_number":"342","item":"Pencil"},{"order_number":"877","item":"Keyboard"}]
@collection = [{"order_number":"123","item":"Paper"},{"order_number":"567","item":"Ruler"},{"order_number":"344","item":"Pen"},{"order_number":"877","item":"Keyboard"},{"order_number":"342","item":"Pencil"}]
@collection.last = @collection[3]
理论上,它看起来是这样的:

@collection = [{"order_number":"123","item":"Paper"},{"order_number":"567","item":"Ruler"},{"order_number":"344","item":"Pen"},{"order_number":"342","item":"Pencil"},{"order_number":"877","item":"Keyboard"}]
@collection = [{"order_number":"123","item":"Paper"},{"order_number":"567","item":"Ruler"},{"order_number":"344","item":"Pen"},{"order_number":"877","item":"Keyboard"},{"order_number":"342","item":"Pencil"}]
@collection.last = @collection[3]
但这显然不是花哨的ruby风格,也不会像我的示例中那样对数组进行重新排序。
此外,我不知道商品的索引,因为它可能会根据用户购物的内容而变化。

如果您有一个商品的索引,它可以归结为

@collection << @collection.delete_at(3)

如果你有一个项目的索引,它可以归结为

@collection << @collection.delete_at(3)

只需将您的收藏分成两部分(无342订单和有342订单),然后加入它们。应该是这样的:

@collection = @collection.select {|e| e[:order_number] != '342' } + @collection.select {|e| e[:order_number] == '342' }

只需将您的收藏分成两部分(无342订单和有342订单),然后加入它们。应该是这样的:

@collection = @collection.select {|e| e[:order_number] != '342' } + @collection.select {|e| e[:order_number] == '342' }
那么:

@collection << @collection.delete_at[@collection.index{|x| x[:order_number] == "342"}]
@collection怎么样:

@collection << @collection.delete_at[@collection.index{|x| x[:order_number] == "342"}]

@collection您也可以尝试以下方法:

> @collection.each_with_index{ |key,value| @collection.push(@collection.delete_at(value)) if key[:order_number] == "344" }
#=>[{:order_number=>"123", :item=>"Paper"}, {:order_number=>"567", :item=>"Ruler"}, {:order_number=>"342", :item=>"Pencil"}, {:order_number=>"877", :item=>"Keyboard"}, {:order_number=>"344", :item=>"Pen"}]

您也可以尝试以下方法:

> @collection.each_with_index{ |key,value| @collection.push(@collection.delete_at(value)) if key[:order_number] == "344" }
#=>[{:order_number=>"123", :item=>"Paper"}, {:order_number=>"567", :item=>"Ruler"}, {:order_number=>"342", :item=>"Pencil"}, {:order_number=>"877", :item=>"Keyboard"}, {:order_number=>"344", :item=>"Pen"}]
您还可以使用以下方法:

您还可以使用以下方法:


你总是知道它是索引吗?或者你需要找到它吗?你想/需要它排序吗?不,我不知道它的索引,我需要找到它。根据客户购买的商品,集合中总是有不同的商品。所以它确实需要排序。你总是知道它是索引吗?或者你需要找到它吗?你想/需要它排序吗?不,我不知道它的索引,我需要找到它。根据客户购买的商品,集合中总是有不同的商品。所以它确实需要排序。对不起,这里不准确,我不知道它的索引。我需要先找到它。然后对数组进行排序。对不起,这里不精确,我不知道它的索引。我需要先找到它。然后对数组进行排序。