一种从数组中选择最大值的方法

时间:2013-01-12 18:17:57

标签: ruby arrays

这将返回数组中最长字符串的第一个实例:

["abcd","efgh","ijk"].max_by { |x| x.length } # => "abcd"

与此类似,是否有一种很好的方法来获取具有最大长度的所有字符串的数组?

["abcd","efgh","ijk"].some_trick ... # => ["abcd","efgh"]

1 个答案:

答案 0 :(得分:10)

我们走了:

["abcd","efgh","ijk"].group_by(&:size).max.last #=> ["abcd","efgh"]

说明:

  • Enumerable#group_by给出一个哈希,其中包含数组中包含的每个唯一大小的字符串作为键,匹配的字符串为values => {4=>["abcd", "efgh"], 3=>["ijk"]}
  • 应用于哈希的
  • Enumerable#max将为我们提供具有匹配值的最高键,如下所示:[key, values] => [4, ["abcd", "efgh"]]
  • Array#last将为我们提供数组的最后一个元素... => ["abcd", "efgh"]