2017-01-22 43 views
3
groceries=[{"bread"=>"2", "eggs"=>"3", "cheese"=>"1", "butter"=>"4"}, 
      {"juice"=>"3", "milk"=>"1", "tea"=>"1", "sugar"=>"1"}] 

如何迭代每个散列并将其推入单独的数组? 我想要的东西,看起来像这样:通过ruby中的多维哈希进行迭代

items = [["bread","eggs","cheese","butter"],["juice","milk","tea","sugar"]] 
+0

如果我想保留格式但只返回长度大于五的元素,该怎么办? – olafsadventures

+0

你的意思是,密钥超过5个字符? –

回答

2

试试这个

groceries.map(&:keys) 
=> [["bread", "eggs", "cheese", "butter"], ["juice", "milk", "tea", "sugar"]] 
1

如果你只是想有5个或更多字符的按键:

p groceries.map{ |hash| hash.keys.select{ |key| key.length >= 5 } } 
#=> [["bread", "cheese", "butter"], ["juice", "sugar"]] 

如果您只需要最多2个具有5个或更多字符的键:

p groceries.map{ |hash| hash.keys.select{ |key| key.length >= 5 }.first(2) } 
#=> [["bread", "cheese"], ["juice", "sugar"]] 
+0

如果我只想从每个包含五个或更多字符的散列中选择前两个,该怎么办? [[“面包”,“奶酪”],[“果汁”,“牛奶”]] – olafsadventures

+0

谢谢,这非常有帮助。 – olafsadventures

+0

猜猜你也可以使用'.grep(/...../)'来选择长度为5或更长的键。 – akuhn