首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Ruby中将一系列的年份转换为一个月份的数组?

如何在Ruby中将一系列的年份转换为一个月份的数组?
EN

Stack Overflow用户
提问于 2013-09-24 11:28:47
回答 2查看 134关注 0票数 1

我有很多年:

代码语言:javascript
复制
[2013, 2012, 2011, 2010, 2009]

如何将其转换为包含这些年中每个月的数组?

代码语言:javascript
复制
[2013-12, 2013-11, 2013-10, 2013-09...]

谢谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-24 11:34:22

使用Enumerable#flat_map

代码语言:javascript
复制
years = [2013, 2012, 2011, 2010, 2009]
years.flat_map { |year|
    12.downto(1).map { |month|
        sprintf("%04d-%02d", year, month) # OR "%04d-%02d" % [year, month]
    }
}
# => ["2013-12", "2013-11", "2013-10", .., "2009-02", "2009-01"]
票数 5
EN

Stack Overflow用户

发布于 2013-09-24 11:57:47

使用Array#product组合年份和月份:

代码语言:javascript
复制
years = [2013, 2012, 2011, 2010, 2009]
months = [*1..12].reverse
#=> [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

years.product(months).map { |y, m| "%d-%02d" % [y, m] }
#=> ["2013-12", "2013-11", "2013-10", "2013-09", "2013-08", "2013-07", "2013-06", "2013-05", "2013-04", "2013-03", "2013-02", "2013-01", "2012-12", "2012-11", "2012-10", "2012-09", "2012-08", "2012-07", "2012-06", "2012-05", "2012-04", "2012-03", "2012-02", "2012-01", "2011-12", "2011-11", "2011-10", "2011-09", "2011-08", "2011-07", "2011-06", "2011-05", "2011-04", "2011-03", "2011-02", "2011-01", "2010-12", "2010-11", "2010-10", "2010-09", "2010-08", "2010-07", "2010-06", "2010-05", "2010-04", "2010-03", "2010-02", "2010-01", "2009-12", "2009-11", "2009-10", "2009-09", "2009-08", "2009-07", "2009-06", "2009-05", "2009-04", "2009-03", "2009-02", "2009-01"]
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18980373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档