簡體   English   中英

從數組填充哈希

[英]Populating a hash from an array

我有這個數組:

params[:types] = [type1, type2, type3...]

我想使用上述數組通過以下方式填充哈希:

params[:hash] = { 
               "type1" => {
                   something: something
               },
               "type2" => {
                    something: something
               },
           }

for index in i ...params[:types]使用for循環這樣的for循環只是使用數組中的最后一個值填充哈希。

您可以使用each_with_object方法執行此操作:

params = {}
params[:types] = ["type1", "type2", "type3"]
params[:types].each_with_object({}) { |k, h| h[k] = { "something" => "something" } }

最后一行將返回:

=> {"type1"=>{"something"=>"something"}, "type2"=>{"something"=>"something"}, "type3"=>{"something"=>"something"}}

這是一個滿足您需要的代碼片段示例。

hash = {}
array.each do |a|                                                
  hash[a.to_s] = { "something" => "something" }                  
end

輸出:

hash                                                             
=> {
  "type1" => {
    "something" => "something"
  },
  "type2" => {
    "something" => "something"
  },
  "type3" => {
    "something" => "something"
  }
}

您可以這樣做:

params = { types: ["type1", "type2", "type3"] }

Hash[params[:types].product([{"something" => "something"}])]
  #=> {"type1"=>{"something"=>"something"},
  #    "type2"=>{"something"=>"something"},
  #    "type3"=>{"something"=>"something"}}

或使用Ruby 2.1,

params[:types].product([{"something" => "something"}]).to_h

如果您想為params[:types]每個元素使用不同的哈希值:

hashes = [{ "something1"=>"something1" }, { "something2"=>"something2" },
          { "something3"=>"something3" }]

然后

Hash[params[:types].zip(hashes)]
  #=> {"type1"=>{"something1"=>"something1"},
  #    "type2"=>{"something2"=>"something2"},
  #    "type3"=>{"something3"=>"something3"}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM