按常量排序哈希键

时间:2015-12-03 20:01:04

标签: ruby-on-rails hash

我有一个order_states表。

我有不同的客户,他们的州有不同的标签。

我正在以这样的哈希方式抓住所有客户端及其状态:

"client one" => {"shipped" => "state_zay", "ordered" => "state_bla"},
"client two" => {"shipped" => "state_bar", "ordered" => "state_foo"}

常量看起来像这样:

ordered, shipped

结果如下:

"client one" => {"ordered" => "state_bla", "shipped" => "state_zay"},
"client two" => {"ordered" => "state_foo", "shipped" => "state_bar"}

注意:我不希望按字母顺序或数字顺序排序。

我希望有一个代表状态正确顺序的参赛者,然后根据该常数订购密钥。

如何做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以通过这样做实现所需的输出

hash = {"client one"=>{"ordered"=>"state_bla", "shipped"=>"state_zay"},
 "client two"=>{"ordered"=>"state_foo", "shipped"=>"state_bar"}}
hash.each do |key,value|
  hash[key] = value.sort_by{|key,value| value}.to_h
end
puts hash # This will be the sorted hash