【发布时间】:2014-07-12 21:30:25
【问题描述】:
我在这个数组中有一对time_tables。有四个time_tables 通过它们的start_location - end_location 和start_date - end_date 以线性方式相互关联。
当第一个time_table 结束时,另一个time_table 开始,依此类推。
我的代码:
arr = [
{ name: 01, start_date: '2014-04-24 22:03:00', start_location: 'A', end_date: '2014-04-24 22:10:00', end_location: 'B' },
{ name: 05, start_date: '2014-04-24 22:10:00', start_location: 'C', end_date: '2014-04-24 23:10:00', end_location: 'D' },
{ name: 01, start_date: '2014-04-24 17:10:00', start_location: 'X', end_date: '2014-04-24 20:10:00', end_location: 'B' },
{ name: 01, start_date: '2014-04-24 17:10:00', start_location: 'Z', end_date: '2014-04-24 20:10:00', end_location: 'B' },
{ name: 06, start_date: '2014-04-24 20:15:00', start_location: 'B', end_date: '2014-04-24 22:10:00', end_location: 'C' },
{ name: 03, start_date: '2014-04-24 23:15:00', start_location: 'D', end_date: '2014-04-24 00:10:00', end_location: 'E' }
]
new_array = []
i = 0
while i <= 5 do
if arr[i][:end_location] == arr[i+1][:start_location] && arr[i][:start_date] <= arr[i+1][:start_date]
new_array << arr[i+1]
end
i = i + 1
end
这是我想要的结果:
# My expexpected result will be this:
# [
# { name: 01, start_date: '2014-04-24 22:03:00', start_location: 'A', end_date: '2014-04-24 22:10:00', end_location: 'B' },
# { name: 06, start_date: '2014-04-24 22:15:00', start_location: 'B', end_date: '2014-04-24 22:20:00', end_location: 'C' },
# { name: 05, start_date: '2014-04-24 22:20:00', start_location: 'C', end_date: '2014-04-24 23:10:00', end_location: 'D' },
# { name: 03, start_date: '2014-04-24 23:15:00', start_location: 'D', end_date: '2014-04-24 00:10:00', end_location: 'E' }
#
]
但我的算法似乎很糟糕。感谢您为完成这项工作提供的见解。
【问题讨论】:
-
我不明白。请解释如何确定预期结果的第二个元素 (
name: 06) 的开始和结束日期。 -
@CarySwoveland 你好,Cary!试图运行你的电子邮件 rubycode,它不会运行:)
-
嗯。看起来不错,但如果您想发送电子邮件,这是我的姓氏中的名字,dot com。