检查数组的所有值是否匹配条件

时间:2018-05-07 01:09:46

标签: ruby-on-rails ruby

我知道空字符串会被认为是真实的,因为只有nil和false被认为是假的。但我有一个像这样的空字符串数组:

["", "", ""].any?
 => true 

如果数组中的所有字符串都为空,我希望它返回false。一种选择是:

["", "", ""].select {|item| item.present? }.any?
 => false 

但是现在我在这个例子中使用了两个迭代器。这是唯一的方法吗?或者是否有工具库中的另一个迭代器可以满足这项工作的需要?

3 个答案:

答案 0 :(得分:4)

any应该采取阻止措施,因此您应该可以执行以下操作:

["", "", ""].any? {|item| item.present?}

可以使用present?符号上的to_proc方法缩短此信用额度(credit:@mu is too short,2018):

['','',''].any?(&:present?)

答案 1 :(得分:1)

你可以写

arr.join != ''

答案 2 :(得分:0)

在我的脑海中,逻辑就像是,“它们并非都是空的”所以我会把

arr = ["","",""]

!arr.all?(&:empty?)

=> false

在字符串上使用.present?在我的测试环境中不起作用。