如果数组包含其他数组,如何检入Ruby?

时间:2014-05-19 18:22:35

标签: ruby

我有一个像这样的多维数组:

main_array = [ [["a","b","c"],["d","e"]], [["e","f"],["g","h"]]  ]  

我想检查main_array是否包含其他数组 我认为这会有效main_array.include?(Array),但我错了。

4 个答案:

答案 0 :(得分:3)

要直接回答您的问题,我会使用#grep方法

 main_array.grep(Array).empty?

如果您的main_array至少包含一个Array元素,则会确保返回false

 main_array.grep(Array).size == main_array.size

如果所有元素都是数组,这将告诉您。

答案 1 :(得分:2)

如果要检查主阵列是否包含所有阵列,可以使用Enumerable#all?

main_array.all? { |item| item.is_a?(Array) }

Enumerable#any?

main_array.any? { |item| item.is_a?(Array) }

如果你想检查main_array是否包含任何数组。

答案 2 :(得分:2)

您可以使用Enumerable#any?

main_array.any?{|element| element.is_a? Array}

您尝试的代码(main_array.include?(Array)无效,因为它正在检查数组main_array是否包含类Array,例如[Array].include?(Array) #=> true。)

答案 3 :(得分:1)

main_array != main_array.flatten