如何压扁最内层的阵列

Jos*_*itt 2 ruby

我有这个数组:

[[["a", "c"], "e"],
 [["a", "c"], "f"],
 [["a", "c"], "g"],
 [["a", "d"], "e"],
 [["a", "d"], "f"],
 [["a", "d"], "g"],
 [["b", "c"], "e"],
 [["b", "c"], "f"],
 [["b", "c"], "g"],
 [["b", "d"], "e"],
 [["b", "d"], "f"],
 [["b", "d"], "g"]]
Run Code Online (Sandbox Code Playgroud)

我想把它变成这样:

[["a", "c", "e"],
 ["a", "c", "f"],
 ["a", "c", "g"],
 ["a", "d", "e"],
 ["a", "d", "f"],
 ["a", "d", "g"],
 ["b", "c", "e"],
 ["b", "c", "f"],
 ["b", "c", "g"],
 ["b", "d", "e"],
 ["b", "d", "f"],
 ["b", "d", "g"]]
Run Code Online (Sandbox Code Playgroud)

我怎么能用Ruby做到这一点?我看着它看起来很平坦似乎从外面工作,而不是从内到外.

Aru*_*hit 9

你可以使用flattenmap:

ar.map! {|i| i.flatten}
 # => [["a", "c", "e"],
 #     ["a", "c", "f"],
 #     ["a", "c", "g"],
 #     ["a", "d", "e"],
 #     ["a", "d", "f"],
 #     ["a", "d", "g"],
 #     ["b", "c", "e"],
 #     ["b", "c", "f"],
 #     ["b", "c", "g"],
 #     ["b", "d", "e"],
 #     ["b", "d", "f"],
 #     ["b", "d", "g"]]
Run Code Online (Sandbox Code Playgroud)

另一个单线是:

 ar.map!(&:flatten)

 # => [["a", "c", "e"],
 #     ["a", "c", "f"],
 #     ["a", "c", "g"],
 #     ["a", "d", "e"],
 #     ["a", "d", "f"],
 #     ["a", "d", "g"],
 #     ["b", "c", "e"],
 #     ["b", "c", "f"],
 #     ["b", "c", "g"],
 #     ["b", "d", "e"],
 #     ["b", "d", "f"],
 #     ["b", "d", "g"]]
Run Code Online (Sandbox Code Playgroud)