ruby-on-rails - 在哈希中获取空月份

标签 ruby-on-rails ruby hash

我有 Month->Value 的散列

{"Apr 2016"=>6, "Aug 2016"=>9, "Jan 2017"=>11, "Apr 2017"=>6, "May 2017"=>9, "Jun 2017"=>1, "Jul 2017"=>9}

我想知道在第一个值和最后一个值之间获取所有空月份的最佳方法是什么

我想要这样的东西

{"Apr 2016"=>6, May 2016=>0, Jun 2016=>0 .... "Aug 2016"=>9, "Sep 2016" => 0 "Jan 2017"=>11, "Apr 2017"=>6, "May 2017"=>9, "Jun 2017"=>1, "Jul 2017"=>9}

最佳答案

这是另一种方法,使用 each_with_object:

def add_months(dates)
  min, max = dates.keys.map { |date| Date.parse(date) }.minmax
  range    = (min..max).map { |date| date.strftime("%b %Y") }.uniq

  range.each_with_object({}) { |date, result| result[date] = dates[date] || 0 }
end

输出:

dates = {"Apr 2016"=>6, "Aug 2016"=>9, "Jan 2017"=>11, "Apr 2017"=>6, "May 2017"=>9, "Jun 2017"=>1, "Jul 2017"=>9}

add_months(dates)
#=> {
#     "Apr 2016"=>6,
#     "May 2016"=>0,
#     "Jun 2016"=>0,
#     "Jul 2016"=>0,
#     "Aug 2016"=>9,
#     "Sep 2016"=>0,
#     "Oct 2016"=>0,
#     "Nov 2016"=>0,
#     "Dec 2016"=>0,
#     "Jan 2017"=>11,
#     "Feb 2017"=>0,
#     "Mar 2017"=>0,
#     "Apr 2017"=>6,
#     "May 2017"=>9,
#     "Jun 2017"=>1,
#     "Jul 2017"=>9
#   }

关于ruby-on-rails - 在哈希中获取空月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45771778/

相关文章:

ruby - 如何在 jenkins slave 上用 watir 运行 ruby​​ 测试?

c# - C#/SQL Server 2016-更新大约1亿条具有哈希值的记录

ruby-on-rails - 避免对 ActiveResource 的键进行符号化

java - 如何使用 bouncy caSTLe 在 Java 中创建 SHA512 摘要字符串?

ruby-on-rails - Rails 和 Mysql 的毫秒数

ruby-on-rails - 如何保护我的网站免受多个帖子请求的影响?

html - 错误的 URI Ruby on Rails : is it because long?

ruby - 为什么我的 Minitest 测试没有并行运行?

当我使用 Turbolinks 渲染部分 rails 后,Javascript 无法工作

ruby-on-rails - Ruby:如何从包含模块的类中访问常量