使用Ruby中的Hash键和值创建新数组

时间:2017-07-01 02:31:06

标签: arrays ruby hash

我有这个问题:

  

给定哈希成员族,将键作为标题和数组   将名称作为值,使用Ruby的内置方法进行收集   直系亲属(“兄弟”和“姐妹”)只是一个新的   阵列。

使用此哈希:

family = {
  uncles:["bob", "joe", "steve"],
  sisters: ["jane", "jill", "beth"],
  brothers: ["frank", "rob", "david"],
  aunts: ["mary", "sally", "susan"]
}

我该怎么做?我甚至不确定我需要使用哪种内置方法。通过这种方式,我是Ruby的初学者。

我有这个:

new_family = Array.new
new_family = family.values_at(:brothers, :sisters)
p new_family

这给了我:

[["frank", "rob", "david"], ["jane", "jill", "beth"]]

但我不确定我这样做是否正确?我觉得我可能没有完全理解这个问题?

2 个答案:

答案 0 :(得分:3)

有许多不同的方法可以做到这一点,你可以简单地做一些事情:

new_family = family[:brothers] + family[:sisters]

或者,就像你上面一样:

new_family = family.values_at(:brothers, :sisters).flatten

答案 1 :(得分:1)

这是另一个:

new_family = [:brothers, :sisters].flat_map(&family.method(:[]))
#=> ["frank", "rob", "david", "jane", "jill", "beth"]