【问题标题】:Get min and max value from this array of hashes从此哈希数组中获取最小值和最大值
【发布时间】:2019-02-17 14:17:13
【问题描述】:

我有一个数组,每行包含一个哈希值,其中包含 created_at 和一个值。如何从值字段的数组中获取最小值和最大值?

数组被调用 - channels_counts_for_history_graph

channels_counts_for_history_graph.max[1]

给我最大日期而不是最大值?

[[Sun, 30 Dec 2018 15:03:55 UTC +00:00, 4305],
[Sun, 30 Dec 2018 15:05:42 UTC +00:00, 4305],
[Mon, 31 Dec 2018 09:24:06 UTC +00:00, 4306],
[Sat, 05 Jan 2019 09:04:50 UTC +00:00, 4308],
[Tue, 01 Jan 2019 11:26:04 UTC +00:00, 4306],
[Wed, 02 Jan 2019 17:24:19 UTC +00:00, 4305]]

任何帮助表示赞赏。

谢谢

【问题讨论】:

  • 也许显示一些示例数据?
  • 您遇到问题的代码是什么?你的代码有什么问题?您收到错误消息吗?错误信息是什么?你得到的结果不是你期望的结果吗?你期望什么结果,为什么,你得到的结果是什么,两者有什么不同?您正在观察的行为不是期望的行为吗?期望的行为是什么,为什么,观察到的行为是什么,它们有何不同?请提供minimal reproducible example
  • 您的问题与您显示为Time(或DateTime?)对象的元素无关。然而,要回答这个问题,读者必须将这些元素更改为字符串,要么将它们保留为字符串,要么将它们转换为 Time 对象,这两者都是浪费时间。将它们制作成整数会更简单。举个例子时,为每个输入分配一个变量 (arr = [...]) 会很有帮助,这样读者就可以在答案和 cmets 中引用这些变量,而无需定义它们。
  • “给我最大日期而不是最大值?” 最大日期最大值?日期是一个值,一个值可以是一个日期。

标签: ruby


【解决方案1】:

我建议使用Enumerable#minmax_by 在一次方法调用中获取最小值最大值:

array = [['Sun, 30 Dec 2018 15:03:55 UTC +00:00', 4305],['Sun, 30 Dec 2018 15:05:42 UTC +00:00', 4305],['Mon, 31 Dec 2018 09:24:06 UTC +00:00', 4306],['Sat, 05 Jan 2019 09:04:50 UTC +00:00', 4308],['Tue, 01 Jan 2019 11:26:04 UTC +00:00', 4306],['Wed, 02 Jan 2019 17:24:19 UTC +00:00', 4305]]

array.minmax_by(&:last)
#=> [["Sun, 30 Dec 2018 15:03:55 UTC +00:00", 4305], ["Sat, 05 Jan 2019 09:04:50 UTC +00:00", 4308]]

【讨论】:

    【解决方案2】:

    默认情况下,当您对数组进行排序时,首先按第一个元素排序。

    您可以反转数组以进行排序。

    channel_counts_for_history_graph.map(&:reverse).max[0]
    

    【讨论】:

      【解决方案3】:

      我可能猜到这就是你要的:

       [{ created_at: Date.new(2017, 1, 1) }, { created_at: Date.new(2019, 1, 1) }, { created_at: Date.new(2018, 1, 1) }]
         .minmax_by { |value| value[:created_at] }
      

      【讨论】:

        猜你喜欢
        • 2018-03-14
        • 2017-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-23
        相关资源
        最近更新 更多