我有一系列像这样的哈希:
arr = [
{ email: 'prathab@hotmail.in', valid: true },
{ email: 'another@mail.com', valid: false }
]
Run Code Online (Sandbox Code Playgroud)
我需要检查是否email: 'prathab@hotmail.in'和valid: true在一个单一的哈希都存在.
如何在不使用each循环的情况下检查数组中的此类哈希?
目前我这样做:
found = false
arr.each do|v|
if v[:email] == 'prathab@hotmail.in' && v[:valid] == true
found = true
break
end
end
Run Code Online (Sandbox Code Playgroud)
您可以使用Enumerable#any?或多或少地执行您在实现中执行的操作:
> found = arr.any?{|e| e[:email] == 'prathab@hotmail.in' && e[:valid] }
=> true
Run Code Online (Sandbox Code Playgroud)
要检查是否哈希拥有所有的键值对另一个哈希拥有,使用>,<或它们的变体>=,<=.您可以放心,键值对的顺序无关紧要.
arr.any?{|h| h >= {email: "prathab@hotmail.in", valid: true}}
# => true
arr.any?{|h| h >= {valid: true, email: "prathab@hotmail.in"}}
# => true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |