Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 基于keys值从现有哈希创建新数组_Ruby_Dictionary_Hash - Fatal编程技术网

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"] }