基于键值从现有散列创建一个新数组

use*_*066 0 ruby hash dictionary

[{"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"}]
Run Code Online (Sandbox Code Playgroud)

我需要从上面的哈希中提取这个数据集/哈希/数组:

逻辑:获取一个数组,其中列出了每个 work_category 行的计数键值,这些值与列出的每个日期的“CASE PICKS”的提供的 work_category 键值相匹配(保持日期顺序最旧 - > 最新)。

期望的结果集:

[ “21315”, “16842”, “24849”, “11806”, “8086”, “5160”, “2202” ]
Run Code Online (Sandbox Code Playgroud)

看起来很基本,但我遇到了一些麻烦......对 Ruby 来说非常绿色。任何可以提供一些帮助的人 - 将不胜感激!

Car*_*and 5

以下是问题中给出的数组的子数组。

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"}
]
Run Code Online (Sandbox Code Playgroud)

只需通过阵列进行一次传递。

arr.each_with_object([]) do |h,arr|
  arr << h["count"] if h["work_category"] == "CASE PICKS"
end
  #=> ["21315", "16842", "24849"]
Run Code Online (Sandbox Code Playgroud)