我有一个混合数组,如:["foo", "bar", {test: "stuff"}, "foobar", {just: "examples}]
我想获取任何哈希值,删除密钥,然后将值推送到数组中。以上面的例子为例,我想回复:
["foo", "bar", "stuff", "foobar", "examples"]
最简单的方法吗?
答案 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"]