Ruby on rails 基于密钥与数组匹配的哈希排序
我有一个rails 4应用程序。我有以下代码:Ruby on rails 基于密钥与数组匹配的哈希排序,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我有一个rails 4应用程序。我有以下代码: @product_types = StoreProduct.where(:store_id => @store.id).pluck(:name) @product_data = @products.map do |product| product[ :data ].values.reverse! end @产品类型输出如下所示:[“颜色”、“数量”、“类型”] @产品数据输出如下所示:[[“红色”、“17”、“书本”] @产品看起
@product_types = StoreProduct.where(:store_id => @store.id).pluck(:name)
@product_data = @products.map do |product|
product[ :data ].values.reverse!
end
@产品类型输出如下所示:[“颜色”、“数量”、“类型”]
@产品数据输出如下所示:[[“红色”、“17”、“书本”]
@产品看起来像:[#“红色”、“数量”=>“17”、“类型”=>“书籍”}>]
我希望@product_数据按照与@product_类型相同的顺序排序。因此,如果其数量、颜色、类型与@product\U types相同,则@product\U数据应按其键进行排序,排序方式与@product\U types相同,因此@product\U数据应为:17、红色、书本。而不是:
@product_data = @products.map do |product|
product[:data].values.reverse!
end
尝试:
这可能会有帮助。我直接处理一般的Ruby构造,为您的
@产品模拟它:
foo = ["Color", "QTY", "TypeOf"]
bar = [{'QTY' => 17, 'TypeOf' => 'Book', 'Color' => 'Red'},
{'Color' => 'Blue', 'QTY' => 18, 'TypeOf' => 'Gem'}]
p foo.map{ |x| bar.map { |y| y[x] } }.transpose
#=> [["Red", 17, "Book"], ["Blue", 18, "Gem"]]
foo = ["Color", "QTY", "TypeOf"]
bar = [{'QTY' => 17, 'TypeOf' => 'Book', 'Color' => 'Red'},
{'Color' => 'Blue', 'QTY' => 18, 'TypeOf' => 'Gem'}]
p foo.map{ |x| bar.map { |y| y[x] } }.transpose
#=> [["Red", 17, "Book"], ["Blue", 18, "Gem"]]