2013-07-26 2 views
0

Я с трудом с вложенными хэшработать с вложенными массивами хэш рубин

Restaurant = {:name=>"McDonalds", 
:location=>"NYC", 
:chefs=> 
    [{:name=>"Sunny", :food=>"fries"}, 
    {:name=>"Brooklyn", :food=>"burgers"}, 
    {:name=>"Mac", :food=>"burgers"}], 
:waiters=> 
    [{:name=>"Jess", :role=>"senior manager"}, 
    {:name=>"Sam", :role=>"manager"}, 
    {:name=>"Jack", :role=>"server"}, 
    {:name=>"Mary", :role=>"server"}]} 

как бы я удалить официант хэш с Джеком как значение, например? или вернуть имена всех официантов с ролью сервера?

ответ

2
Restaurant[:waiters].reject!{|h| h[:name] == "Jack"} 
Restaurant # => { 
    :name=>"McDonalds", :location=>"NYC", 
    :chefs=>[{:name=>"Sunny", :food=>"fries"}, {:name=>"Brooklyn", :food=>"burgers"}, {:name=>"Mac", :food=>"burgers"}], 
    :waiters=>[{:name=>"Jess", :role=>"senior manager"}, {:name=>"Sam", :role=>"manager"}, {:name=>"Mary", :role=>"server"}] 
} 

Restaurant[:waiters].select{|h| h[:role] == "server"} 
# => [{:name=>"Mary", :role=>"server"}] 
+0

Я думаю, вы отправили вывод другой версии вашего кода. Существует более одного официанта, который имеет роль = «сервер». – 7stud

+0

@ 7stud Он непрерывный. После того, как '' Jack ''был удален, есть только' 'Mary''. – sawa

+0

Как вы измените роль Джека на менеджера? – user2621221

Смежные вопросы