我有以下内容:
array_of_hashes = [{"a" => 1, "b" => 2}, {"a" => 3, "b" => 4}]
Run Code Online (Sandbox Code Playgroud)
我想将其转换为:
new_hash = [{"cow" => 1, "dog" => 2}, {"cow" => 3, "dog" => 4}]
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
new_hash = {}
array_of_hashes.each do |a|
new_hash["cow"] = a["a"]
new_hash["dog"] = a["b"]
end
Run Code Online (Sandbox Code Playgroud)
但是,new_hash仅产生第二个哈希array_of_hashes:
new_hash = {"cow"=>3, "dog"=>4}
Run Code Online (Sandbox Code Playgroud)
对于那些需要明确说明问题的人:我如何映射array_of_hashes到get new_hash(如前两行代码中所定义)?
您正在将哈希数组转换为单个哈希.你错过了整个数组部分.
你要
new_array = []
array_of_hashes.each do |a|
new_hash = {}
new_hash["cow"] = a["a"]
new_hash["dog"] = a["b"]
new_array << new_hash
end
Run Code Online (Sandbox Code Playgroud)
如果你更习惯地写这个,你会产生这样的东西:
new_array = array_of_hashes.map do |hash|
{ "cow" => hash['a'], "dog" => hash['b'] }
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |