gpt4 book ai didi

ruby-on-rails - Ruby:合并数组或散列

转载 作者:数据小太阳 更新时间:2023-10-29 07:33:00 26 4
gpt4 key购买 nike

我无法理解如何解决这个问题,基本上我有两个看起来像这样的数组:

第一个数组:

days_to_report
#=> [{:date=>Fri, 01 Apr 2011},
#=> {:date=>Sat, 02 Apr 2011},
#=> {:date=>Sun, 03 Apr 2011},
#=> {:date=>Mon, 04 Apr 2011}]

第二个数组:

tracks_by_day
#=> [{:date=>Mon, 04 Apr 2011, :count=>905, :percentage=>13.205895228367137},
#=> {:date=>Sat, 02 Apr 2011, :count=>6745, :percentage=>98.4240478622501},
#=> {:date=>Fri, 01 Apr 2011, :count=>6853, :percentage=>100.0}]

在这种情况下,日期是 Date 对象。

所以我想合并它们,以便第一个数组 (days_to_report) 中的每个项目都具有第二个数组也具有的数据,就像理想的输出一样:(注意2011 年 4 月 3 日星期日的日期数据)

[{:date=>Mon, 04 Apr 2011, :count=>905,  :percentage=>13.205895228367137},
{:date=>Sun, 03 Apr 2011, :count=>0, :percentage=>0},
{:date=>Sat, 02 Apr 2011, :count=>6745, :percentage=>98.4240478622501},
{:date=>Fri, 01 Apr 2011, :count=>6853, :percentage=>100.0}]

请注意,数组的第二项的值是零,因为 :date 不在 tracks_by_day 数组的散列中...任何想法如何做到这一点?看起来像 zip 或其他东西中提供的功能,但我需要匹配键以查看它们是否存在,如果不存在,则将它们的值填充为零。

我希望我描述的是正确的,再次感谢大家!高五!

最佳答案

days = days_to_report.map{|d| d[:date] } - tracks_by_day.map{|d| d[:date]}
days.each{ |d| tracks_by_day << {:date => d, :count => 0, :percentage => 0} }

days.inject(tracks_by_day){|a,d| a << {:date => d, :count => 0, :percentage => 0}}

关于ruby-on-rails - Ruby:合并数组或散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5545042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com