【问题标题】:Iterate through to create a hash of hashes遍历以创建散列的散列
【发布时间】:2013-08-11 18:31:46
【问题描述】:

作为最终结果,我需要一个像这样的哈希:

{items: {lorem: val1, dolor: val2}, {lorem: val1, dolor: val2}...}

例如散列的散列。

问题是它应该像这样从迭代中创建:

@result = []

@goods = {lorem: "ipsum", dolor: "sit"}

@items.each do |item|
  @goods.map do |k, v|
    if item.title == "ipsum"
      @result << [k, v]
    else
      @result << [k, item.title]
    end
  end
end

但这不是我要搜索的,因为@result 是数组,它不是二维的(结果我有 [[foo, bar] [foo1,bar1]...])

我看到k 可以如何转换为哈希键 (k.to_sym),但我的问题是将哈希的哈希值作为最终输出。

Ruby 1.9.3(和 Rails,但我相信这可以在不添加任何 Rails 的情况下完成)

非常感谢。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 hash


    【解决方案1】:

    预期结果的格式不是有效的哈希。

    代替

    {items: {lorem: val1, dolor: val2}, {lorem: val1, dolor: val2}...}
    

    应该是这样的

    {items: [{lorem: val1, dolor: val2}, {lorem: val1, dolor: val2}]}
    

    想要得到的结果也不难

    @items = []
    @goods = {lorem: "ipsum", dolor: "sit"}
    @items << @goods
    @result = {items: @items}
    

    【讨论】:

      猜你喜欢
      • 2012-08-03
      • 1970-01-01
      • 2018-06-29
      • 1970-01-01
      • 2019-01-31
      • 2016-08-03
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多