查找数组中非空的数组

时间:2014-01-31 00:15:52

标签: ruby

我有一个像这样的数组:

[row1, row2, row3]

我需要找到这些行中有多少不是空的(里面有一些对象)。我知道我可以做row1.any吗?但是我怎么能找到数组中有多少?

3 个答案:

答案 0 :(得分:5)

使用Array#count的块形式:

[row1, row2, row3].count &:any?

答案 1 :(得分:3)

这个怎么样?

[row1,row2,row3].select { |arr| arr.any? }.size

select只是具有任何元素的对象(数组),然后计算生成的数组的大小。

答案 2 :(得分:0)

与往常一样,请记住,如果数组中填充了.any?false,则nil不会给您带来任何打击。

[[false], [nil], [true], []].count &:any? #=> 1 only one non-empty (true)

或许做得更好:

[[false], [nil], [true], []].reject(&:empty?).count #=> 3 non-empty (true, nil, false)