【问题标题】:In an array of hash how to delete an element with particular value for a key in ruby?在哈希数组中,如何删除 ruby​​ 中键的特定值的元素?
【发布时间】:2020-02-25 09:03:16
【问题描述】:

在散列数组中,如何删除具有特定键值的元素?

例如:

array = [ {"lang"=> 'Ruby', "is_using"=> "Yes"}, { "lang"=> "Go", "is_using" => "No"}, {"lang"=> "Rust", "is_using"=> "No"} ]

我需要编写一个最小且高效的 ruby​​ 脚本,该脚本从数组中删除所有元素,其中“No”作为键“is_using”的值。

【问题讨论】:

    标签: arrays ruby-on-rails ruby


    【解决方案1】:

    使用Array#delete_if:

    array = [ {"lang"=> 'Ruby', "is_using"=> "Yes"}, { "lang"=> "Go", "is_using" => "No"}, {"lang"=> "Rust", "is_using"=> "No"} ]
    array.delete_if { |hash| hash['is_using'] == 'No' }
    #=> [{ "lang" => "Ruby", "is_using" => "Yes" }]
    

    【讨论】:

      【解决方案2】:

      如果你不想改变原始数组,那么你可以使用reject:

      array = [{ "lang"=> 'Ruby', "is_using"=> "Yes" },
               { "lang"=> "Go", "is_using" => "No" },
               { "lang"=> "Rust", "is_using"=> "No" }]
      
      array.reject { |h| h["is_using"].eql?('Yes') }
      # [{"lang"=>"Go", "is_using"=>"No"}, {"lang"=>"Rust", "is_using"=>"No"}]
      

      【讨论】:

      • 我确实想改变原始数组,无论如何谢谢:)
      • 啊,好吧。没关系。
      • 您可能应该使用“否”而不是“是”@Rajagopalan(否则使用 select)。
      • 感谢您的精心编辑。并谈到你的观点。那有什么问题?我拒绝具有“is_using”的哈希是的,这里有什么问题?
      猜你喜欢
      • 2015-03-16
      • 1970-01-01
      • 1970-01-01
      • 2016-07-11
      • 1970-01-01
      • 2019-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多