我需要从一个数组中找到最大值,该数组的元素是一个数组,由两个元素组成,第一个是表示时间的字符串,第二个是整数.我想要数组的第二个元素中的最大值和最小值.
a = [
["2015-04-01 20:51:03 +0530", 7],
["2015-04-01 20:51:03 +0530", 11],
["2015-04-01 20:51:03 +0530", 8],
["2015-04-01 20:51:03 +0530", 8],
["2015-04-01 20:51:03 +0530", 8],
["2015-04-01 20:51:03 +0530", 8],
["2015-04-01 20:51:05 +0530", 8],
["2015-04-01 20:51:05 +0530", 20],
["2015-04-01 20:51:05 +0530", 0],
["2015-04-01 20:51:05 +0530", 2],
["2015-04-01 20:51:05 +0530", 1],
["2015-04-01 20:51:05 +0530", 9]
]
Run Code Online (Sandbox Code Playgroud)
知道最好的方法是做什么的吗?
我会用来map从嵌套数组中收集元素.一旦它做,只是用min,max或minmax在该集合.
a = [["2015-04-01 20:51:03 +0530", 7], ["2015-04-01 20:51:03 +0530", 11], ["2015-04-01 20:51:03 +0530", 8], ["2015-04-01 20:51:03 +0530", 8], ["2015-04-01 20:51:03 +0530", 8], ["2015-04-01 20:51:03 +0530", 8],["2015-04-01 20:51:05 +0530", 8], ["2015-04-01 20:51:05 +0530", 20], ["2015-04-01 20:51:05 +0530", 0], ["2015-04-01 20:51:05 +0530", 2], ["2015-04-01 20:51:05 +0530", 1], ["2015-04-01 20:51:05 +0530", 9]]
values = a.map(&:last)
values.min
#=> 0
values.max
#=> 20
values.minmax
#=> [0, 20]
Run Code Online (Sandbox Code Playgroud)
其他一些方法:
a.max_by(&:last)
# => ["2015-04-01 20:51:05 +0530", 20]
a.max_by(&:last).last # => 20
a.min_by(&:last).last # => 0
Run Code Online (Sandbox Code Playgroud)