Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ruby哈希检查值是否存在_Ruby_Hash - Fatal编程技术网

ruby哈希检查值是否存在

ruby哈希检查值是否存在,ruby,hash,Ruby,Hash,这一定是个容易的问题。。但我似乎找不到答案。 我试图检查散列中是否存在特定键的值 hash = {{"name" => "John", "Loc" => "US", "fname" => "John Doe"}, {"name" => "Eve", "Loc" => "UK", "fname" => "John Eve"}} 目前我正在通过哈希循环,检查h[“name”]=“John”… 我想看看.include或是否有价值?方法类型是否可用

这一定是个容易的问题。。但我似乎找不到答案。 我试图检查散列中是否存在特定键的值

hash = {{"name" => "John", "Loc" => "US", "fname" => "John Doe"},
        {"name" => "Eve", "Loc" => "UK", "fname" => "John Eve"}}
目前我正在通过哈希循环,检查h[“name”]=“John”…

我想看看
.include
是否有价值?
方法类型是否可用。我读了关于散列的文档和我手头的一本书,但找不到它


我认为像
if hash[“name”].has_value?(“John”)
这样的东西比在hash中循环更有用。提前感谢您的帮助

首先,我们的散列不是有效的散列。我想你想要一个像这样的散列数组

array = [
  { "name" => "John", "Loc" => "US", "fname" => "John Doe" },
  { "name" => "Eve",  "Loc" => "UK", "fname" => "John Eve" }
]
然后你可以这样做:

array.select { |hash| hash['name'] == 'John' }
# => returns [{"name" => "John", "Loc" => "US", "fname" => "John Doe"}] 

array.any? { |hash| hash['name'] == 'John' }
# => true

谢谢正是我所需要的…=]为什么使用
.include?
而不是
==
?与似乎更简单的
array.select{124; hash{124; hash['name']='John'}
相比,有什么优势吗?如果确定hash数组的哪些元素(比如,
arr
)包含
“name”=>“John”
,您可以这样做:
arr.size.times.select{i | arr[i][“name”=“John”
。这将返回对应于匹配哈希的
arr
索引数组(可能为空)。