2015-01-16 3 views
0

У меня есть массив следующим образом:Как удалить элементы в массиве на основе даты в рубине

[{"day"=>"2014-04-08", "v"=>3}, 
{"day"=>"2014-04-09", "v"=>49}, 
{"day"=>"2014-04-10", "v"=>4}, 
{"day"=>"2014-04-11", "v"=>1587}, 
{"day"=>"2014-04-12", "v"=>20}, 

Как удалить все элементы из этого массива, где «день» после «2014- 04-10' , например (оставив только 4/11 и 4/12)

ответ

1
timestamp = Time.parse('2014-04-10') 
arr = [...] 

arr.keep_if { |h| Time.parse(h['day']) > timestamp } 
# => [{"day"=>"2014-04-11", "v"=>1587}, {"day"=>"2014-04-12", "v"=>20}] 
1

использования массив # выберите или массив # отвергает и сравнивать „день“, используя Date класса.

require 'date' 

[ 
    {"day"=>"2014-04-08", "v"=>3}, 
    {"day"=>"2014-04-09", "v"=>49}, 
    {"day"=>"2014-04-10", "v"=>4}, 
    {"day"=>"2014-04-11", "v"=>1587}, 
    {"day"=>"2014-04-12", "v"=>20} 
].select { |d| Date.parse(d["day"]) > Date.new(2014, 4, 10) } 
Смежные вопросы