【问题标题】:working with nested arrays hashes ruby使用嵌套数组散列红宝石
【发布时间】:2013-07-26 12:21:54
【问题描述】:

我很难使用嵌套哈希

 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"}]}

例如,我将如何删除以 Jack 为值的服务员哈希? 还是返回所有服务员的名字与服务员的角色?

【问题讨论】:

    标签: ruby arrays nested hash


    【解决方案1】:
    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"}]
    

    【讨论】:

    • 我认为您发布了另一个版本的代码的输出。有多个服务员的角色 = "server"。
    • @7stud 是连续的。 "Jack"被删除后,就只有"Mary"了。
    • Restaurant[:waiters].find{|h| h[:name] == "Jack"}[:role] = "manager"
    • 谢谢!另外,你如何打印出数组中的所有元素,因为你不能简单地放置它。
    • 您是否考虑过在继续添加新问题之前接受答案?
    猜你喜欢
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 2019-11-03
    • 1970-01-01
    • 2012-09-13
    • 2020-01-08
    相关资源
    最近更新 更多