簡體   English   中英

我如何在存儲在哈希中的數組內搜索字符串值

[英]how do I search for a string value inside an array stored in a hash

我在軌道上使用ruby,試圖找出是否可以(和/或如何)在數組中搜索特定字符串值的哈希值? 如果有匹配項(找到鮑勃),我希望它返回True。

```

string_query = "Bob@gmail.com"

email_array is the following:                                                                                                                       
[
    [0] {
        "email" => "bill@gmail.com",
         "name" => "william"
    },
    [1] {
        "email" => "mike@gmail.com",
         "name" => "michael"
    },
    [2] {
        "email" => "Bob@gmail.com",
         "name" => "robert"
    }
]

```

我在堆棧溢出中看到了此示例-但它是數字。 我的是繩子。 如何基於哈希值從數組中獲取哈希?

非常感謝。

我現在不在,還沒有嘗試過,但是可以用

string_query = "Bob@gmail.com"
email_array.each do |s|
   if s['email'] == string_query
       #your comparision statements here 
   end
end
string_query = "Bob@gmail.com"


email_array = [{
        "email" => "bill@gmail.com",
         "name" => "william"
    },
    {
        "email" => "mike@gmail.com",
         "name" => "michael"
    },
    {
        "email" => "Bob@gmail.com",
         "name" => "robert"
    },
    {
        "email" => "Bob@gmail.com",
         "name" => "robert2"
    }
]

如果要選擇所有匹配的哈希,可以使用select

email_array.select {|hash| hash["email"] == string_query }

#=> [{"email"=>"Bob@gmail.com", "name"=>"robert"}, {"email"=>"Bob@gmail.com", "name"=>"robert2"}]

如果您只想檢查truefalse ,請使用其中的any?

email_array.any? {|hash| hash["email"] == string_query }

#=> true

如果您只對第一實例感興趣。 您可以使用detect

email_array.detect {|hash| hash["email"] == string_query }

#=> {"email"=>"Bob@gmail.com", "name"=>"robert"}

你可以這樣做

email_array.select {|hash| hash["email"] == string_query }.present?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM