У меня есть массив хэшей:
@candidates = [
{
id: 15,
years_of_experience: 4,
github_points: 293,
languages: ['C', 'Ruby', 'Python', 'Clojure'],
age: 26
},
{
id: 7,
years_of_experience: 1,
github_points: 145,
languages: ['JavaScript', 'Ruby', 'Go', 'Erlang'],
age: 19
},
{
id: 9,
years_of_experience: 6,
github_points: 435,
languages: ['JavaScript', 'SQL', 'C#'], age: 32
},
{
id: 11,
years_of_experience: 3,
github_points: 232,
languages: ['Java', 'Ruby', 'JavaScript'],
age: 31
},
{
id: 11,
years_of_experience: 12,
github_points: 32,
languages: ['VB', 'Cobol', 'Fortran'],
age: 42
},
{
id: 13,
years_of_experience: 2,
github_points: 328,
languages: ['Python', 'Ruby', 'JavaScript'],
age: 25
},
{
id: 15,
years_of_experience: 1,
github_points: 400,
languages: ['JavaScript', 'Ruby'],
age: 16
},
]
Я пытаюсь взять аргумент id
и вернуть хэш в пределах @candidates
, значение которого для :id
соответствует id
. Если совпадений не найдено, возвращается nil
.
Мой метод выглядит так:
def find(id)
for candidate in @candidates
if candidate[:id] == id
return candidate
else
return nil
end
end
end
find(15)
Это, однако, возвращает nil
, как только оно заканчивается первым элементом в массиве. Он должен продолжить до конца массива и найти все совпадения, а если он не найдет ни одного, вернуть nil
, а не просто вернуть nil
для первого экземпляра, в котором он не найдет совпадение.
Любая помощь приветствуется.