我有这个问题
1年服务15天
服务3天17天
服务5天20天
服务25天或更长时间
所以提出这个代码,我得到了雇用的一年
这是代码
def year_of_service(date_of_hired)
years = [1, 3, 5, 10]
now = Time.now.utc.to_date
get_year = now.year - date_of_hired.year - ((now.month > date_of_hired.month ||
(now.month == date_of_hired.month && now.day >= date_of_hired.day)) ? 0 : 1)
end
我在这里的解决方案是我将使用if语句,但对我来说,这将是一个很长的代码,是否有另一种解决方案,使其简短或其他可能的解决方案
困难在这里我怎么知道'get_year'是否在我的数组之间???
示例:
'get_year'是4怎么知道3年的服务不是5但是4不在数组中
答案 0 :(得分:2)
您可以使用take_while
或select
。
y = [1, 3, 5, 10]
y.take_while { |i| i <= 4 }.max #=> 3
y.select { |i| i <= 4 }.last #=> 3
但这些涉及收集超过需要的元素。另一种方法是找到符合条件的最后一个元素的索引,然后使用常规数组表示法来获取该元素:
y[y.rindex { |i| i <= 4 }] #=> 3
您也可以使用find
,但这会涉及首先反转数组。目前Ruby中没有rfind
。