【问题标题】:Rails Create hash from two other hashRails 从其他两个哈希创建哈希
【发布时间】:2018-07-16 11:22:14
【问题描述】:

我有两个哈希 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}

分钟

{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,.......}

任何人都可以帮我解决这个问题,什么是有效的方法。 必须重复循环两次。

【问题讨论】:

  • 为什么是2018-05-24 20:15:11 UTC - 2018-05-24 20:15:03 UTC => 9

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


【解决方案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} 

【讨论】:

  • @DennyMueller:那是时代,不是字符串
  • 是的,我的错,就像 10 秒前一样测试它。我最初假设 op 有 json 哈希而不是时间对象,你的解决方案看起来就像你只是减去了字符串,我就像“哇,你可以减去字符串”
猜你喜欢
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
  • 2018-12-21
  • 2013-12-20
  • 2011-04-20
  • 2016-03-30
  • 2015-10-06
相关资源
最近更新 更多