Как я поиск в массив хэшей хэшей в Ruby?
у меня есть массив хэшей, @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
спасибо.
3 ответов
вы ищете перечисляемый#select (также называемый find_all
):
@fathers.select {|father| father["age"] > 35 }
# => [ { "age" => 40, "father" => "Bob" },
# { "age" => 50, "father" => "Batman" } ]
в документации он " возвращает массив, содержащий все элементы [перечисляемого, в этом случае @fathers
] для которого блок не является ложным."
Если Ваш массив выглядит так:
array = [
{:name => "Hitesh" , :age => 27 , :place => "xyz"} ,
{:name => "John" , :age => 26 , :place => "xtz"} ,
{:name => "Anil" , :age => 26 , :place => "xsz"}
]
и вы хотите знать, присутствует ли какое-либо значение в вашем массиве. Используйте Метод Find
array.find {|x| x[:name] == "Hitesh"}
это вернет объект, если Hitesh присутствует в имени, иначе верните nil