首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >创建迭代对象数组的哈希

创建迭代对象数组的哈希
EN

Stack Overflow用户
提问于 2013-04-03 02:51:22
回答 4查看 12.3K关注 0票数 18

我有一个对象,它有namedata等属性。我想创建一个散列,它使用名称作为键,数据(这是一个数组)作为值。我不知道如何使用map减少下面的代码。有可能吗?

代码语言:javascript
复制
def fc_hash
  fcs = Hash.new
  self.forecasts.each do |fc|
    fcs[fc.name] = fc.data
  end
  fcs
end
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-03 02:55:44

使用Hash[]

代码语言:javascript
复制
Forecast = Struct.new(:name, :data)
forecasts = [Forecast.new('bob', 1), Forecast.new('mary', 2)]
Hash[forecasts.map{|forecast| [forecast.name, forecast.data]}]
# => {"mary"=>2, "bob"=>1}
票数 23
EN

Stack Overflow用户

发布于 2013-04-03 02:56:11

代码语言:javascript
复制
def fc_hash
 forecasts.each_with_object({}) do |forecast, hash|
    hash[forecast.name] = forecast.data
  end
end
票数 13
EN

Stack Overflow用户

发布于 2013-04-03 03:53:59

我总是使用injectreduce来完成以下操作:

代码语言:javascript
复制
self.forecasts.reduce({}) do |h,e|
  h.merge(e.name => e.data)
end
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15772036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档