У меня есть массив хэшей, @fathers.
a_father = { "father" => "Bob", "age" => 40 }
@fathers << a_father
a_father = { "father" => "David", "age" => 32 }
@fathers << a_father
a_father = { "father" => "Batman", "age" => 50 }
@fathers << a_father
Как я могу найти этот массив и вернуть массив хэшей, для которого блок возвращает true?
Например:
@fathers.some_method("age" > 35) #=> array containing the hashes of bob and batman
Спасибо.
@fathers.find {|father| father["age"] > 35 }
вместо этого.это вернет первый матч
источник
#select
- но все идет за ваш вариант использования.#detect
вернется,nil
если совпадений не найдено, а#select
в ответе @ Jordan вернется[]
.find
вместоdetect
более читабельного кодаfind
однако, может быть запутанным в рельсах.select
иdetect
не совпадают,select
будет проходить через весь массив, аdetect
остановится, как только будет найдено первое совпадение. Если вы ищете ОДИН матч@fathers.select {|f| f["age"] > 35 }.first
против@fathers.detect {|f| f["age"] > 35 }
производительности и читабельности, мой голос заdetect
если ваш массив выглядит
И вы хотите знать, присутствует ли какое-либо значение в вашем массиве. Используйте метод поиска
Это возвратит объект, если Hitesh присутствует в имени, иначе вернет ноль
источник
"hitesh"
, оно не вернет хеш. Как мы можем объяснить регистр слов в таких случаях?