【发布时间】:2017-03-16 05:04:03
【问题描述】:
我有一个数组和一个哈希。该数组包含日期,哈希包含一个日期作为键和一个浮点数作为值 (revenue_green)。
这是我的数组:
@reporting_dates = @month_ends.find_all {|e| e < @current_reporting_date.to_s } <<
@current_reporting_date
还有我的哈希:
@revenue_green = @reports_at_reporting_dates.sum('revenue_green')
这给了我以下输出:
@reporting_dates: ["2017-01-27", "2017-02-24", Fri, 10 Mar 2017]
@revenue_green: {Fri, 10 Mar 2017=>7.0}
对于两个日期 @reporting_dates(2017-01-27 和 2017-02-24)@revenue_green 没有任何值。
我想创建一个哈希值,它会给出以下输出:
@new_hash: {2017-01-27 => 0, 2017-02-24 => 0, 2017-03-10 => 7.0}
所以对于不存在revenue_green 的所有日期,它应该放置一个 0。
我该怎么做?
更新
@month_ends = ["2017-01-27", "2017-02-24", "2017-03-31", "2017-04-28",
"2017-05-26", "2017-06-30", "2017-07-28", "2017-08-25",
"2017-09-29", "2017-10-27", "2017-11-24", "2017-12-29"]
@all_dates = (Date.new(@reporting_year).
beginning_of_year..1.month.from_now).
to_a.reverse.select { |day| day.wday == 5 }
@current_reporting_date = @all_dates.select { |d| d <= Date.today }.first
@all_reports = Report.all
@reports_at_reporting_dates = @all_reports.where(:day => @reporting_dates).order(:day)
【问题讨论】:
-
您能否编辑您的答案并将您的代码示例插入为文本而不是图像?
-
好的,我用代码更新了我的问题。
-
请阅读“minimal reproducible example”。我们需要最少的代码来复制问题。
@month_ends、@current_reporting_date和@reports_at_reporting_dates未定义,因此我们无法运行和测试来帮助您。 -
好的,我添加了所有缺失的变量。我知道我的代码并不漂亮,但它现在可以工作(我将在我的项目后期重构)
-
我重新格式化了您的代码,这样读者就不必水平滚动来阅读它。我相信你不会介意的。您的问题涉及
@reporting_dates和@revenue_green的值的操作。您如何获得这些值无关紧要。 “这是我的数组”到(但不包括)“我想创建一个哈希......”应该被删除。我不明白您为什么添加“编辑”部分,因为它没有引用上面引用的两个实例变量或@new_hash。我没有看到任何(更不用说所有)变量都需要是实例变量(而不是局部变量)。
标签: ruby-on-rails arrays ruby hash