【问题标题】:Get the key/value pairs of a nested hash获取嵌套哈希的键/值对
【发布时间】:2017-06-19 23:50:02
【问题描述】:

请查看以下哈希:

params[:category] #=> {"category"=>{"name"=>"name1", "parent_id"=>1, "category"=>{"name"=>"name2"}}}

以及所需的输出:

params[:category] #=> {"category"=>{"name"=>"name1", "parent_id"=>1 }}

我尝试了几件事,但都没有成功

params[:category].delete(params[:category][...]

如何获取此嵌套哈希的键/值对以将其删除?

感谢您的帮助

【问题讨论】:

  • 类别嵌套在类别中再次嵌套在类别中?
  • 嗨,apneadiving,是的,类别嵌套在类别中。我知道在一个散列中有几个相同的键不是一个好习惯,但我在这里没有选择..
  • 为什么没有选择?你不是在控制生成哈希的源代码吗?
  • 是的,哈希是一个以这种方式格式化的输入源。

标签: ruby-on-rails ruby hash


【解决方案1】:

如果哈希是:

params[:category] = {"category"=>{"name"=>"name1", "parent_id"=>1, "category"=>{"name"=>"name2"}}}

然后使用:

params[:category]['category'].delete('category')
params[:category]
=> {"category"=>{"name"=>"name1", "parent_id"=>1}}

【讨论】:

    【解决方案2】:

    如果哈希是:

    params[:category] = {"category"=>{"name"=>"name1", "parent_id"=>1, "category"=>{"name"=>"name2"}}}
    

    然后使用:

    params[:category]["category"].slice!("category")
    

    【讨论】:

      【解决方案3】:
      h = {"category"=>{"name"=>"name1", "parent_id"=>1, "category"=>{"name"=>"name2"}}}
      h['category'].delete('category')
      {"category"=>{"name"=>"name1", "parent_id"=>1}}
      

      第三行是结果。是否要删除h['category']category 键?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-23
        • 2018-04-21
        • 1970-01-01
        • 2012-08-07
        相关资源
        最近更新 更多