Ruby 检查是否包含一个哈希与另一个哈希

Ruby 检查是否包含一个哈希与另一个哈希,ruby,Ruby,我有这样一个哈希数组: arr = [ { email: 'prathab@hotmail.in', valid: true }, { email: 'another@mail.com', valid: false } ] 我需要检查电子邮件:'prathab@hotmail.in“和valid:true都存在于一个散列中 如何在不使用每个循环的情况下检查数组中的此类散列 目前我正在这样做: found = false arr.each do|v| if v[:email] ==

我有这样一个哈希数组:

arr = [
  { email: 'prathab@hotmail.in', valid: true },
  { email: 'another@mail.com', valid: false }
]
我需要检查
电子邮件:'prathab@hotmail.in“
valid:true
都存在于一个散列中

如何在不使用
每个
循环的情况下检查数组中的此类散列

目前我正在这样做:

found = false
arr.each do|v|
  if v[:email] == 'prathab@hotmail.in' && v[:valid] == true
    found = true
    break
  end
end
您可以使用它或多或少地完成您在实现中所做的工作:

> found = arr.any?{|e| e[:email] == 'prathab@hotmail.in' && e[:valid] }
=> true

要检查一个哈希是否具有另一个哈希所具有的所有键值对,请使用
=
'email':'prathab@hotmail.in“
应该是
'email'=>”prathab@hotmail.in“
电子邮件:”prathab@hotmail.in“
否则上面会抛出语法错误。@ray,我粘贴了它,它就工作了。它从字符串中构建符号,你可以用这种方式构建一个带有空格的符号-有点像
:“一个文本”
@mrzasa是的,你是对的,对于上面的版本,它可以工作,我在下面的版本中查找它抛出语法错误的地方。@Pratha你的代码实际上是错误的。“你找错钥匙了。”萨瓦。我已经解决了。这里的问题是在另一个哈希中包含一个哈希。你有相关链接吗?这不是比直接比较慢吗?比较是如何在哈希上工作的?我使用的是较低版本吗?`{}>={}=>NoMethodError:undefined method
='对于{}:Hash
@mrzasa,请自己查找Ruby文档。适合我!使用
ruby 2.3.1p112
Thank@sawaThis的缺点是键和值硬连接到方法中。如果有任何更改,则必须重写该方法。
arr.any?{|h| h >= {email: "prathab@hotmail.in", valid: true}}
# => true

arr.any?{|h| h >= {valid: true, email: "prathab@hotmail.in"}}
# => true