Ruby 基于keys值从现有哈希创建新数组
我需要从上面的散列中取出此数据集/散列/数组: 逻辑: 获取一个数组,该数组列出每个工作类别行的计数键值,该值与为维护日期顺序“最旧->最新”列出的每个日期提供的“案例选择”工作类别键值相匹配 期望结果集:Ruby 基于keys值从现有哈希创建新数组,ruby,dictionary,hash,Ruby,Dictionary,Hash,我需要从上面的散列中取出此数据集/散列/数组: 逻辑: 获取一个数组,该数组列出每个工作类别行的计数键值,该值与为维护日期顺序“最旧->最新”列出的每个日期提供的“案例选择”工作类别键值相匹配 期望结果集: [{"date"=>"2020-09-15", "work_category"=>"CASE PICKS", "count"=>"21315"}, {&
[{"date"=>"2020-09-15", "work_category"=>"CASE PICKS", "count"=>"21315"},
{"date"=>"2020-09-15", "work_category"=>"LOADING", "count"=>"6401"},
{"date"=>"2020-09-15", "work_category"=>"PALLET STAGING", "count"=>"6649"},
{"date"=>"2020-09-15", "work_category"=>"PUTAWAY", "count"=>"4974"},
{"date"=>"2020-09-15", "work_category"=>"RECEIVING", "count"=>"4108"},
{"date"=>"2020-09-16", "work_category"=>"CASE PICKS", "count"=>"16842"},
{"date"=>"2020-09-16", "work_category"=>"LOADING", "count"=>"4987"},
{"date"=>"2020-09-16", "work_category"=>"PALLET STAGING", "count"=>"5716"},
{"date"=>"2020-09-16", "work_category"=>"PUTAWAY", "count"=>"6292"},
{"date"=>"2020-09-16", "work_category"=>"RECEIVING", "count"=>"4894"},
{"date"=>"2020-09-17", "work_category"=>"CASE PICKS", "count"=>"24849"},
{"date"=>"2020-09-17", "work_category"=>"LOADING", "count"=>"5303"},
{"date"=>"2020-09-17", "work_category"=>"PALLET STAGING", "count"=>"5753"},
{"date"=>"2020-09-17", "work_category"=>"PUTAWAY", "count"=>"5136"},
{"date"=>"2020-09-17", "work_category"=>"RECEIVING", "count"=>"4699"},
{"date"=>"2020-09-18", "work_category"=>"CASE PICKS", "count"=>"11806"},
{"date"=>"2020-09-18", "work_category"=>"LOADING", "count"=>"5147"},
{"date"=>"2020-09-18", "work_category"=>"PALLET STAGING", "count"=>"5426"},
{"date"=>"2020-09-18", "work_category"=>"PUTAWAY", "count"=>"5110"},
{"date"=>"2020-09-18", "work_category"=>"RECEIVING", "count"=>"4534"},
{"date"=>"2020-09-19", "work_category"=>"CASE PICKS", "count"=>"8086"},
{"date"=>"2020-09-19", "work_category"=>"LOADING", "count"=>"1753"},
{"date"=>"2020-09-19", "work_category"=>"PALLET STAGING", "count"=>"2201"},
{"date"=>"2020-09-19", "work_category"=>"PUTAWAY", "count"=>"1341"},
{"date"=>"2020-09-19", "work_category"=>"RECEIVING", "count"=>"1052"},
{"date"=>"2020-09-20", "work_category"=>"CASE PICKS", "count"=>"5160"},
{"date"=>"2020-09-20", "work_category"=>"LOADING", "count"=>"2690"},
{"date"=>"2020-09-20", "work_category"=>"PALLET STAGING", "count"=>"2663"},
{"date"=>"2020-09-20", "work_category"=>"PUTAWAY", "count"=>"1554"},
{"date"=>"2020-09-20", "work_category"=>"RECEIVING", "count"=>"1536"},
{"date"=>"2020-09-21", "work_category"=>"CASE PICKS", "count"=>"2202"},
{"date"=>"2020-09-21", "work_category"=>"LOADING", "count"=>"860"},
{"date"=>"2020-09-21", "work_category"=>"PALLET STAGING", "count"=>"1004"},
{"date"=>"2020-09-21", "work_category"=>"PUTAWAY", "count"=>"1238"},
{"date"=>"2020-09-21", "work_category"=>"RECEIVING", "count"=>"954"}]
看起来很基本,但我有一些麻烦。。。非常绿到红宝石色。任何能提供帮助的人都将不胜感激 以下是问题中给出的数组的子数组
[ “21315”, “16842”, “24849”, “11806”, “8086”, “5160”, “2202” ]
只需在阵列中进行一次传递
arr = [
{"date"=>"2020-09-15", "work_category"=>"CASE PICKS", "count"=>"21315"},
{"date"=>"2020-09-15", "work_category"=>"LOADING", "count"=>"6401"},
{"date"=>"2020-09-15", "work_category"=>"PALLET STAGING", "count"=>"6649"},
{"date"=>"2020-09-15", "work_category"=>"PUTAWAY", "count"=>"4974"},
{"date"=>"2020-09-15", "work_category"=>"RECEIVING", "count"=>"4108"},
{"date"=>"2020-09-16", "work_category"=>"CASE PICKS", "count"=>"16842"},
{"date"=>"2020-09-16", "work_category"=>"LOADING", "count"=>"4987"},
{"date"=>"2020-09-16", "work_category"=>"PALLET STAGING", "count"=>"5716"},
{"date"=>"2020-09-16", "work_category"=>"PUTAWAY", "count"=>"6292"},
{"date"=>"2020-09-16", "work_category"=>"RECEIVING", "count"=>"4894"},
{"date"=>"2020-09-17", "work_category"=>"CASE PICKS", "count"=>"24849"},
{"date"=>"2020-09-17", "work_category"=>"LOADING", "count"=>"5303"}
]
首先,使用筛选项目,然后使用提取计数
您确定结果应该是散列而不是数组吗?您想要的结果集实际上不是有效的Ruby-哈希有键和值,请记住。对不起-一个新数组。你说得对。这可能在内存和CPU上更有效一些。
arr.each_with_object([]) do |h,arr|
arr << h["count"] if h["work_category"] == "CASE PICKS"
end
#=> ["21315", "16842", "24849"]
counts = arr
.select { |item| item["work_category"] == "CASE PICKS" }
.map { |item| item["count"] }