给定一个[5, 20, 13, 100]
的Ruby数组,如何检查这些项中的任何一个是>= 100
?
最终希望它返回true
或false
。
似乎我可以做arr.select { |num| num >= 100 }
这样的事情并计算它们,但似乎有一种更简洁的方法或它。
答案 0 :(得分:7)
尝试[5, 20, 13, 100].any?{|x| x >= 100 }
。
答案 1 :(得分:0)
从基本的角度来看,您可以使用数组ary
:
漂亮的旧平原for
:
ret = false
for i in 0...(ary.size)
if ary[i] >= 100
ret = true
break
end
end
或者您可以使用while
ret = false
i = 0
while not ret or i < ary.size
ret = ary[i] >= 100
i += 1
end
或者你可以在数组上使用each
方法:
ret = false
ary.each do |el|
ret = true if el >= 100
end
或者您可以像@Philip answer
一样使用any?
或者您可以使用max
方法,正如@ sagar-pandya巧妙建议的那样(此解决方案非常好,但需要遍历整个数组):
ary.max >= 100
或者你可以在一个较新的boolean数组上map
你的数组(但这需要在两个数组上有两个循环,因此它不如其他解决方案那么高效),然后inject
结果为一个带有结果的新变量:
bol = ary.map { |el| el >= 100 }
ret = bol.inject { |s, el| s or el }
或者您可以直接使用inject
(但这次您必须设置初始条件):
ret = ary.inject(false) { |s, el| s or (el >= 100) }
选择你的武器:)。但是如果你想这样做(考虑你的具体任务):
true
条件时停止的方法。