Получить минимальное и максимальное значение из этого массива хэшей - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть массив, который содержит хэш в каждой строке, содержащей create_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]]

Любая помощь приветствуется.

Спасибо

Ответы [ 3 ]

0 голосов
/ 17 февраля 2019

По умолчанию, когда вы сортируете массив по первому элементу первым.

Вы можете изменить массив для целей сортировки.

channel_counts_for_history_graph.map(&:reverse).max[0]
0 голосов
/ 17 февраля 2019

Я предлагаю использовать 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]]
0 голосов
/ 17 февраля 2019

Я могу предположить, что это то, что вы просили:

 [{ 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] }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...