Rails从另外两个哈希创建哈希

时间:2018-07-16 11:22:15

标签: ruby-on-rails ruby ruby-hash

我有两个哈希maxmin包含相同的密钥

最大

{22479=>2018-05-24 20:15:11 UTC, 15392=>2018-04-24 09:38:32 UTC, 16319=>2018-04-27 02:21:53 UTC, 24644=>2018-06-07 20:01:04 UTC, 21551=>2018-05-19 20:11:11 UTC, 17876=>2018-05-03 15:47:54 UTC, 22467=>2018-05-24 17:11:15 UTC}

min

{22479=>2018-05-24 20:15:03 UTC, 15392=>2018-04-24 09:38:15 UTC, 16319=>2018-04-27 02:21:53 UTC, 24644=>2018-06-07 19:59:23 UTC, 21551=>2018-05-19 20:11:04 UTC, 17876=>2018-05-03 15:47:54 UTC, 22467=>2018-05-24 17:11:15 UTC}

我想创建第三个哈希,其中两个哈希在时间上有所不同。喜欢,

差异

{22479=> 9, 15392=> 17,.......}

有人可以帮我这个忙吗? 是必须循环两次。

1 个答案:

答案 0 :(得分:1)

输入

max
 => {22479=>2018-05-24 20:15:11 UTC,
     15392=>2018-04-24 09:38:32 UTC,
     16319=>2018-04-27 02:21:53 UTC,
     24644=>2018-06-07 20:01:04 UTC,
     21551=>2018-05-19 20:11:11 UTC,
     17876=>2018-05-03 15:47:54 UTC,
     22467=>2018-05-24 17:11:15 UTC}

min
 => {22479=>2018-05-24 20:15:03 UTC,
     15392=>2018-04-24 09:38:15 UTC,
     16319=>2018-04-27 02:21:53 UTC,
     24644=>2018-06-07 19:59:23 UTC,
     21551=>2018-05-19 20:11:04 UTC,
     17876=>2018-05-03 15:47:54 UTC,
     22467=>2018-05-24 17:11:15 UTC}

解决方案

maxmin中获取公用密钥,并计算时间差(以秒为单位)。

(max.keys & min.keys).each_with_object({}) do |k, out|
  out[k] = (max[k] - min[k]).to_i
end
 => {22479=>8,
     15392=>17,
     16319=>0,
     24644=>101,
     21551=>7,
     17876=>0,
     22467=>0}