检查Ruby数组中的任何数字是否大于或等于100

时间:2018-04-17 18:08:48

标签: arrays ruby

给定一个[5, 20, 13, 100]的Ruby数组,如何检查这些项中的任何一个是>= 100

最终希望它返回truefalse

似乎我可以做arr.select { |num| num >= 100 }这样的事情并计算它们,但似乎有一种更简洁的方法或它。

2 个答案:

答案 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条件时停止的方法。