取任何哈希键并展平成混合数组

时间:2014-12-29 23:29:28

标签: ruby arrays hash

我有一个混合数组,如:["foo", "bar", {test: "stuff"}, "foobar", {just: "examples}]

我想获取任何哈希值,删除密钥,然后将值推送到数组中。以上面的例子为例,我想回复:

["foo", "bar", "stuff", "foobar", "examples"]

最简单的方法吗?

2 个答案:

答案 0 :(得分:3)

a = ["foo", "bar", {test: "stuff"}, "foobar", {just: "examples"}]
a.flat_map { |x| x.is_a?(Hash) ? x.values : x }
# => ["foo", "bar", "stuff", "foobar", "examples"]

答案 1 :(得分:0)

另一种方式,没有if(正如@Matt所指出的那样,只有哈希才能使用单个键,如示例所示):

a = ["foo", "bar", {test: "stuff"}, "foobar", {just: "examples"}]

a.map { |e| [*e].flatten.last }
  #=> ["foo", "bar", "stuff", "foobar", "examples"]