[英]Ruby: How to filter in a hash structure to get all the keys which are <>“1”?
I want to find some elegant way to achieve this. 我想找到一些优雅的方法来实现这一目标。 Maybe like follwing: 也许像下面这样:
hash={"1"=>"1","2"=>"2"}
r=[]
hash.each do |k,v|
if k!="1"
r<<k
end
end
puts r
Any better way to achieve this? 有没有更好的方法实现这一目标
You can use "array difference": 你可以使用“数组差异”:
hash.keys - ['1']
#=> ["2"]
puts r = hash.keys.select { |i| i != "1" }
Here's one way: 这是一种方式:
r = hash.select { |k,v,| k != "1" }
puts r
Hope this helps, 希望这可以帮助,
Ben 本
hash.reject{|k,v| k == "1"}
I like reject over select with a negative test because it's more readable. 我喜欢拒绝选择负面测试,因为它更具可读性。 "Reject values where X == '1' is true" versus "collect values where x != '1' is true". “拒绝X =='1'为真的值”与“收集值,其中x!='1'为真”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.