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

mas*_*ily 3 ruby arrays

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

["abcd","efgh","ijk"].max_by { |x| x.length } # => "abcd"
Run Code Online (Sandbox Code Playgroud)

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

["abcd","efgh","ijk"].some_trick ... # => ["abcd","efgh"]
Run Code Online (Sandbox Code Playgroud)

Ant*_*rto 10

开始了 :

["abcd","efgh","ijk"].group_by(&:size).max.last #=> ["abcd","efgh"]
Run Code Online (Sandbox Code Playgroud)

说明:

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

  • 我不知道,在文档中查看每个方法似乎都会告诉你很多.或者做`["abcd","efgh","ijk"].group_by(&:size)`然后`_.max`然后是`_.last` in irb. (4认同)