Bru*_*des 6 ruby ruby-on-rails
我正在尝试创建一个函数来完成以下哈希中的小时序列.
{
name: "cardio",
data: [["06:00", 999], ["09:00", 154], ["10:00", 1059], ["11:00", 90]]
}
Run Code Online (Sandbox Code Playgroud)
它应该在字段数据中创建所有缺少的值
["07:00", 0], ["08:00", 0], ["12:00", 0], ["13:00", 0] ... ["23:00", 0]
Run Code Online (Sandbox Code Playgroud)
预期结果:
{
name: "cardio",
data: [["06:00", 999], ["07:00", 0], ["08:00", 0], ["09:00", 154], ["10:00", 1059], ["11:00", 90]], ["12:00", 0], ["13:00", 0] ... ["23:00", 0]
}
Run Code Online (Sandbox Code Playgroud)
有可能吗?就像是:
data.each do |row|
(6..23).each do |hour|
.....
end
end
Run Code Online (Sandbox Code Playgroud)
你可以利用Array#assoc这样的事情:
搜索一个数组,其元素也是使用obj.==将obj与每个包含数组的第一个元素进行比较的数组.
input = {
name: "cardio",
data: [["06:00", 999], ["09:00", 154], ["10:00", 1059], ["11:00", 90]]
}
input[:data] = 24.times.collect do |hour|
hour = "%02d:00" % hour
input[:data].assoc(hour) || [hour, 0]
end
puts input.inspect
# {:name=>"cardio", :data=>[["00:00", 0], ["01:00", 0], ["02:00", 0], ["03:00", 0], ["04:00", 0], ["05:00", 0], ["06:00", 999], ["07:00", 0], ["08:00", 0], ["09:00", 154], ["10:00", 1059], ["11:00", 90], ["12:00", 0], ["13:00", 0], ["14:00", 0], ["15:00", 0], ["16:00", 0], ["17:00", 0], ["18:00", 0], ["19:00", 0], ["20:00", 0], ["21:00", 0], ["22:00", 0], ["23:00", 0]]}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |