Ruby:从数组中选择一个哈希

deb*_*deb 21 ruby

我有以下数组:

response = [{"label"=>"cat", "name"=>"kitty", "id"=>189955}, {"label" => "dog", "name"=>"rex", "id" => 550081}]
Run Code Online (Sandbox Code Playgroud)

如何选择包含标签cat的哈希?我知道response.first会给我相同的结果,但我想搜索by标签.

谢谢!

德布

Adr*_*ian 44

response.find {|x| x['label'] == 'cat' } #=> {"label"=>"cat", "name"=>"kitty", "id"=>189955}
Run Code Online (Sandbox Code Playgroud)


Dan*_*ara 12

尝试:

response.select { |x| x["label"] == "cat" }
Run Code Online (Sandbox Code Playgroud)

  • 是的,`Array#find`返回第一个匹配或nil,而`Array#select`和`Array#find_all`返回所有匹配元素的数组. (7认同)
  • 并且值得注意的是,"Array#find"的同义词是"Array#detect". (3认同)