Как искать в массиве хэшей по каждому символу - PullRequest
0 голосов
/ 29 октября 2019

У меня есть массив хэшей:

2.6.0 :132 > a = [{:id=>51, :company_name=>"231421AAAAA company"},
{:id=>52, :company_name=>"tregfsd"}, {:id=>53, :company_name=>"aaaaa"},
{:id=>54, :company_name=>"zzzzzz"}, {:id=>55, :company_name=>"bbbbb"}]

Как найти данные в случае, если пользователь предоставляет неполные параметры, такие как company_name = "231421", они должны вернуть

 => {:id=>51, :company_name=>"231421AAAAA company"}

Я былпытаюсь использовать a.detect { |d| d[:company_name] == '231421' }, но у меня есть => nil

Что я должен использовать, чтобы выполнить поиск без указания всего company_name?

Ответы [ 2 ]

1 голос
/ 29 октября 2019

Я бы использовал String#start_with?

a.detect { |d| d[:company_name].start_with?('231421') } 
1 голос
/ 29 октября 2019

Если вам нужна одна запись:

a.find{ |company| company[:company_name].include?(company_name) }
#=> { :id => 51, :company_name => "231421AAAAA company" }

Если вы хотите более одной записи матча, используйте select вместо find:

company_name = 'a'
a.select{ |company| company[:company_name].include?(company_name) }
#=> [
#     { :id => 51, :company_name => "231421AAAAA company" },
#     { :id => 53, :company_name => "aaaaa" }
#   ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...