从包含Ruby深度为n的数组的数组中提取项目

时间:2015-01-16 17:25:27

标签: ruby recursion

我正在尝试从数组中提取所有元素,如:[[42,43,46],[23,64],[2,[2,3]]]。我认为递归方法方法可行,但递归对我来说是一个相对较新的概念。递归是最好的解决方案还是有更好的方法?我能够用这种方法提取数组中第一个最深的项目:

def list_items(array)
  return array if array.is_a? Integer
  array = array.shift
  list_items(array)
end

set = [[42,43,46],[23,64],[2,[2,3]]]
result = list_items(set)
p result

1 个答案:

答案 0 :(得分:1)

使用#flatten方法。

  

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

set = [[42,43,46],[23,64],[2,[2,3]]]
set.flatten # => [42, 43, 46, 23, 64, 2, 2, 3]