[英]ruby how to make a hash with new keys, and values from an array
我有一个这样的数组数组:
arr = [["food", "eggs"],["beverage", "milk"],["desert", "cake"]]
我需要将其转换为哈希数组,其中的键是自定义键和新键,并且键的值是数组中的值,如下所示:
hash = [{"category": "food", "item":"eggs"},
{"category": "beverage", "item":"milk"}
{"category": "desert", "item":"cake"}]
我该怎么做? 谢谢
使用Array#map
:
arr = [["food", "eggs"], ["beverage", "milk"], ["desert", "cake"]]
arr.map { |category, item| { category: category, item: item } }
# => [
# {:category=>"food", :item=>"eggs"},
# {:category=>"beverage", :item=>"milk"},
# {:category=>"desert", :item=>"cake"}
# ]
arr = [["food", "eggs"],["beverage", "milk"],["desert", "cake"]]
arr.inject([]) do |hash, (v1, v2)|
hash << { category: v1, item: v2 }
end
我使用inject
来保持代码简洁。
下次您可能想展示您在问题中尝试过的内容,只是为了证明您实际上是在询问代码之前尝试做某事。
hash = arr.each_with_object({}){|elem, hsh|hsh[elem[0]] = elem[1]}
hash = array.map {|ary| Hash[[:category, :item].zip ary ]}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.