繁体   English   中英

ruby如何使用新键和数组中的值进行哈希

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM