如何有效地展平数组对象至少有一个嵌套?

时间:2016-12-19 08:12:23

标签: arrays ruby

如何平铺至少有一个嵌套的数组对象?

我有一个数组。

items = [[["Period", "November 19 - 21, 2016"], ["Title", "Test"]], ["Total", "$350"]]

我喜欢把它改成至少有一个巢的阵列。

 [["Period", "November 19 - 21, 2016"], ["Title", "Test"], ["Total", "$350"]]

有什么想法吗?

更新

  1. 我尝试了array#flatten方法但没有骰子。

    items.flatten(1)
    #=> [["Period", "November 19 - 21, 2016"], ["Title", "Test"], "Total", "$350"]
    
  2. 此外,可以更改数组中值的顺序/数量。

    [["Total", "$350"], [["Period", "November 19 - 21, 2016"], ["Title", "Test"]]]
    

1 个答案:

答案 0 :(得分:1)

如果树中的最后一个分支(嵌套数组)总是有两个叶子,则可以展平树并将其成对切片:

items.flatten.each_slice(2).to_a
# =>  [["Period", "November 19 - 21, 2016"], ["Title", "Test"], ["Total", "$350"]]