[英]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.