【问题标题】:hash remove item key and value哈希删除项目键和值
【发布时间】:2018-11-22 21:31:16
【问题描述】:

我有以下哈希:

{
  "itens":
  [
     {"year": "2018", "data": "id": 1},
     {"year": "2018", "data": "id": 2}
  ]
}

我需要在哈希数组中插入另一个元素。但我不能有重复的条目。

所以我必须插入这一行:

{"year": "2019", "data": "id": 2}

但首先我需要删除以前的:

{"year": "2018", "data": "id": 2}

如何遍历哈希、查找键和值、删除和添加新条目?

谢谢。

【问题讨论】:

    标签: ruby


    【解决方案1】:

    我假设你的意思是这样的哈希:

     hash = { 
       items: [
         {year: 2018, data: { id: 1 }},
         {year: 2018, data: { id: 2 }}
       ]
     }
    

    例如,您可以通过以下方式更改它:

    item = {year: 2019, data: { id: 2 }}
    hash[:items].delete_if do |stored_hash|
        stored_hash[:data][:id] == item[:data][:id]
    end
    hash[:items] << item
    

    这会导致:

    hash
    
    => {:items=>[{:year=>2018, :data=>{:id=>1}}, {:year=>2019, :data=>{:id=>2}}]}
    

    我希望这能回答你的问题...

    【讨论】:

      【解决方案2】:

      给定变量:

      myhash = {
        "itens":
        [
           {"year": "2018", "data": nil, "id": 1},
           {"year": "2018", "data": nil, "id": 2}
        ]
      }
      
      insert = {"year": "2019", "data": "something", "id": 2}
      remove = {"year": "2018", "data": nil, "id": 2}
      

      如果insertremove 有相同的键,你可以这样做:

      myhash[:'itens'].find { |h| h[:'id'] == insert[:'id'] }.merge! insert
      
      #=> {:itens=>[{:year=>"2018", :data=>nil, :id=>1}, {:year=>"2019", :data=>"something", :id=>2}]}
      

      【讨论】:

        猜你喜欢
        • 2023-04-10
        • 2016-02-06
        • 2013-10-09
        • 1970-01-01
        • 1970-01-01
        • 2021-05-25
        • 2015-03-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多