我有一个像这样的多维数组:
main_array = [ [["a","b","c"],["d","e"]], [["e","f"],["g","h"]] ]
我想检查main_array
是否包含其他数组
我认为这会有效main_array.include?(Array)
,但我错了。
答案 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) }
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