如何计算Ruby中数组中的数组数?

Mil*_*les 3 ruby arrays count multidimensional-array

我似乎无法找到计算数组中数组数量的算法.例

特定

[ [ "Array", "1" ], [ "Array", "2" ] ]
Run Code Online (Sandbox Code Playgroud)

输出应该是两个

特定

[
    [
        [ ["Array", "1"], ["Array", "2"] ],
        [ ["Array", "3"], ["Array", "4"] ],
    ],
    [
        [ ["Array", "5"], ["Array", "6"] ],
        [ ["Array", "7"], ["Array", "8"] ]
    ]
]`
Run Code Online (Sandbox Code Playgroud)

输出应为8

Ali*_*kau 5

这个递归函数将完成任何嵌套数组的工作:

def count_subarrays array
  return 0 unless array && array.is_a?(Array)

  nested = array.select { |e| e.is_a?(Array) }
  if nested.empty?
    1 # this is a leaf
  else
    nested.inject(0) { |sum, ary| sum + count_subarrays(ary) }
  end
end
Run Code Online (Sandbox Code Playgroud)