如何在Ruby中展平数组?

时间:2017-11-23 10:41:30

标签: ruby

在Ruby上。我有数组c = [["a"], ["b"]]

的数组

如何将其转换为c = a + b

c = ["a", "b"]

任何数组。也许有可能不使用其他变量。 所有阵列都没有变平。

d = [ [["a"], ["b"]], [["c"], ["d"]], [["e"], ["f"]] ] 

我需要[ [["a"], ["b"], ["c"], ["d"], ["e"], ["f"]] ]

3 个答案:

答案 0 :(得分:3)

Array#flatten也接受参数。

  

可选的level参数确定递归的级别   压平。

c = [[["a"]], [["b"]]]

c.flatten
# => ["a", "b"]

c.flatten(1)
# => [["a"], ["b"]]

答案 1 :(得分:1)

使用flatten

  

返回一个新数组,该数组是此数组的一维展平(递归)。也就是说,对于作为数组的每个元素,将其元素提取到新数组中。如果可选的level参数确定要递展的递归级别。

irb(main):001:0> a =  [["a"], ["b"]]
=> [["a"], ["b"]]
irb(main):002:0> a.flatten
=> ["a", "b"]

您可以控制递归级别flatten(n)

irb(main):001:0> c = [[["a"]], [["b"]]]
=> [[["a"]], [["b"]]]
irb(main):002:0> c.flatten 1
=> [["a"], ["b"]]
irb(main):003:0> 

答案 2 :(得分:0)

红宝石:

c = [["a"], ["b"]]

将数组数组转换为数组

c.flatten

获取数组数组的总和

c.flatten.sum