Ruby新的独特嵌套数组项数组

时间:2014-07-14 14:46:49

标签: ruby-on-rails ruby

寻找一种方法将嵌套的数组列表减少为一个唯一的项目数组,并删除任何空数组。

希望减少这个数组:

[[2700, 177, 2092, 176, 188], [123, 1234], []]

向下到这个新阵列:

[2700, 177, 2092, 176, 188, 123, 1234]

尝试了array.uniq.compact,但没有效果。

感谢您的任何建议。

2 个答案:

答案 0 :(得分:9)

您需要先平整阵列。

array.flatten.uniq

一些注意事项:

  • Array#flatten将所有子数组合并到顶级数组中。由于空数组不包含任何元素,因此将自动删除它们。
  • Array#compact返回一个删除了nil元素的新数组。
  • Array#uniq返回一个只包含唯一元素的新数组。

答案 1 :(得分:2)

尝试Array#flatten

  

返回一个新的数组,该数组是self的一维展平   (递归的)。

=> [[2700, 177, 2092, 176, 188], [123, 1234], []].flatten
#> [2700, 177, 2092, 176, 188, 123, 1234]