我有两个数据,
{:date=>"2015-09-23", :time=>["13:30"]}
{:date=>"2015-09-23", :time=>["12:00"]}
...more
我试图从中删除
{:date=>"2015-09-21", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]}
{:date=>"2015-09-22", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]}
{:date=>"2015-09-23", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]}
{:date=>"2015-09-24", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]}
我希望可以得到的输出
{:date=>"2015-09-21", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]}
{:date=>"2015-09-22", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]}
{:date=>"2015-09-23", :time=>["12:30", "13:00", "14:00", "14:30"]}
{:date=>"2015-09-24", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]}
我试过了
removeAry.each do |b|
if b[:date] == "2015-09-23"
puts b[:time].to_s.delete("13:30")
end
end
有更好的主意吗?
好的,这就是我要做的:
require 'set'
to_delete = [
{:date=>"2015-09-23", :time=>["13:30"]},
{:date=>"2015-09-23", :time=>["12:00"]}
]
data = [
{:date=>"2015-09-21", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]},
{:date=>"2015-09-22", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]},
{:date=>"2015-09-23", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]},
{:date=>"2015-09-24", :time=>["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]}
]
# convert to_delete array to a hash { "2015-09-23" => #<Set: {"13:30", "12:00"}> }
# we use Set here to store only unique time values
to_delete_as_hash = to_delete.reduce({}) do |acc, item|
acc[item[:date]] ||= Set.new
acc[item[:date]] += item[:time]
acc
end
filtered = data.map do |item|
# skip this item if there's no need to process this date
next item unless to_delete_as_hash[item[:date]]
# subtract to_delete values from current item[:time] values
item[:time] -= to_delete_as_hash[item[:date]].to_a
item
end
p filtered
输出:
[
{:date => "2015-09-21", :time => ["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]},
{:date => "2015-09-22", :time => ["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]},
{:date => "2015-09-23", :time => ["12:30", "13:00", "14:00", "14:30"]},
{:date => "2015-09-24", :time => ["12:00", "12:30", "13:00", "13:30", "14:00", "14:30"]}
]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句