我有一系列哈希如下:
[{"k1"=>"v1", "k2"=>"75.1%"}, {"k1"=>"v2", "k2"=>"-NA-"}, {"k1"=>"v3", "k2"=>"5.1%"}]
Run Code Online (Sandbox Code Playgroud)
现在,我想首先检查数组是否包含"k1"带有值的键的哈希"v3".如果是,那么我想从数组中删除该哈希.
结果应该是:
[{"k1"=>"v1", "k2"=>"75.1%"}, {"k1"=>"v2", "k2"=>"-NA-"}]
Run Code Online (Sandbox Code Playgroud)
Ste*_*fan 43
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-"}]
Run Code Online (Sandbox Code Playgroud)
如果没有匹配条件的哈希,则数组保持不变.
Aru*_*hit 12
您可以使用Array#reject(如果您不想修改接收器)以及Array#reject!(如果您想修改接收器)
arr = [{"k1"=>"v1", "k2"=>"75.1%"}, {"k1"=>"v2", "k2"=>"-NA-"}, {"k1"=>"v3", "k2"=>"5.1%"}]
p arr.reject { |h| h["k1"] == "v3" }
# >> [{"k1"=>"v1", "k2"=>"75.1%"}, {"k1"=>"v2", "k2"=>"-NA-"}]
arr = [{"k1"=>"v1", "k2"=>"75.1%"}, {"k1"=>"v2", "k2"=>"-NA-"}, {"k1"=>"v3", "k2"=>"5.1%"}]
p arr.reject! { |h| h["k1"] == "v3" }
# >> [{"k1"=>"v1", "k2"=>"75.1%"}, {"k1"=>"v2", "k2"=>"-NA-"}]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14942 次 |
| 最近记录: |