Ruby on rails 将特定集合/数组项放在rails中的最后一个位置
我在rails中有一个集合/数组,转换为json,如下所示: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
@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"}]
您还可以使用以下方法:
您还可以使用以下方法:
你总是知道它是索引吗?或者你需要找到它吗?你想/需要它排序吗?不,我不知道它的索引,我需要找到它。根据客户购买的商品,集合中总是有不同的商品。所以它确实需要排序。你总是知道它是索引吗?或者你需要找到它吗?你想/需要它排序吗?不,我不知道它的索引,我需要找到它。根据客户购买的商品,集合中总是有不同的商品。所以它确实需要排序。对不起,这里不准确,我不知道它的索引。我需要先找到它。然后对数组进行排序。对不起,这里不精确,我不知道它的索引。我需要先找到它。然后对数组进行排序。