我怎样才能使30分钟到8小时的时间间隔为阵列。所以这样:
[30, 60, 90, all-the-way-to, 480]
答案 0 :(得分:6)
您可以使用Range和step方法,然后将其转换为Array:
(30..480).step(30).to_a
结果是:
[30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330, 360, 390, 420, 450, 480)
答案 1 :(得分:2)
您的论据是
increment = 30
duration = 480 # 8*60
您可以使用
increment.step(by: increment, to: duration).to_a
#=> [ 30, 60, 90, 120, 150, 180, 210, 240,
# 270, 300, 330, 360, 390, 420, 450, 480]
读起来不错。 Numeric#step在不使用任何块的情况下会返回一个枚举数,这就是为什么需要.to_a
的原因。
答案 2 :(得分:1)
我想到了这个,但是@infused的答案更好。
a = (1..16).to_a.map{|i| i*30 }
答案 3 :(得分:0)
从范围中选择(Enumerable#select
):
stop = 480
step = 30
(step..stop).select { |n| n % step == 0 }
#=> [0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330, 360, 390, 420, 450, 480]