【发布时间】:2013-06-13 17:14:43
【问题描述】:
如果我有一系列月份,例如:
["05", "06", "07", "08", "09", "10", "11", "12", "01", "02", "03", "04", "05"]
还有一个月值和month_sum的散列:
[{"month"=>5, "month_sum"=>20}, {"month"=>4, "month_sum"=>100}]
如何将哈希合并到数组中,以便得到类似的东西?
[{"05" => 20}, {"07" => 0}, {"08" => 0}, {"09" => 0}, {"10" => 0}, {"11" => 0}, {"12" => 0}, {"01" => 0}, {"02" => 0}, {"03" => 0}, {"04" => 100}, {"05" => 0}, {"06" => 0}]
编辑
月份数组生成自:
date_from = Date.parse(params[:search][:date_from])
date_to = Date.parse(params[:search][:date_to])
date_range = date_from..date_to
date_months = date_range.map {|d| Date.new(d.year, d.month, 1) }.uniq
@date_range = date_months.map {|d| d.strftime "%m" }
因此需要注意的是,如果范围超出,例如两年,则数组将具有重复的月份值。我想我需要将年份添加到该数组中?
有没有更好的方法来做到这一点?
这里的最终目标是为 highcharts 获取散列或数组,以显示特定车辆的每月燃料使用总量。 (只是让你有一些背景)。
【问题讨论】:
-
以编程方式,带有循环。没有神奇的方法可以做到这一点。你试过什么?
-
问题不清楚。 1. 告诉第一个
{"05" ...}应该有"20"而不是第二个的规则是什么? 2.{"06" ...}是按照什么规则插入到预期输出中的?这里有系统的规律,还是只是你的马虎? -
您似乎随意地将“06”从第二个元素移动到了最后一个元素。
-
对不起,这只是一个粗略的例子——所以是的,任意的。
-
这不是一个真正的问题吗?
标签: ruby-on-rails arrays hash merge