在Ruby中从哈希数组中删除哈希 [英] Deleting a hash from array of hashes in Ruby

查看:119
本文介绍了在Ruby中从哈希数组中删除哈希的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  [{k1=>v1,k2 =75.1%},{k1=>v2,k2=> -  NA-},{k1=>v3,k2=> ;5.1%}] 

现在,我想先检查数组是否包含散列键k1,其值v3。如果是,那么我想从数组中删除该散列。



结果应该是:

  [{k1= >v1,k2=>75.1%},{k1=>v2,k2=> -  NA-}] 


解决方案

使用 Array#delete_if

  arr = [{k1=>v1,k2=>75.1%},{k1=>v2,k2= > -  NA-},{k1=>v3,k2=>5.1%}] 

arr.delete_if {| h | h [k1] ==v3}
#=> [{k1=>v1,k2=>75.1%},{k1=>v2,k2=> - NA-}] $ b

如果没有匹配条件的哈希,数组保持不变。


I have an array of hashes as following:

[{"k1"=>"v1", "k2"=>"75.1%"}, {"k1"=>"v2", "k2"=>"-NA-"}, {"k1"=>"v3", "k2"=>"5.1%"}]

Now, I want to first check whether the array contains a hash with key "k1" with value "v3". If yes, then I want to delete that hash from the array.

The result should be:

[{"k1"=>"v1", "k2"=>"75.1%"}, {"k1"=>"v2", "k2"=>"-NA-"}]

解决方案

Use Array#delete_if:

arr = [{"k1"=>"v1", "k2"=>"75.1%"}, {"k1"=>"v2", "k2"=>"-NA-"}, {"k1"=>"v3", "k2"=>"5.1%"}]

arr.delete_if { |h| h["k1"] == "v3" }
#=> [{"k1"=>"v1", "k2"=>"75.1%"}, {"k1"=>"v2", "k2"=>"-NA-"}]

If there is no hash matching the condition, the array is left unchanged.

这篇关于在Ruby中从哈希数组中删除哈希的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆