3

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

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

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

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

1 回答 1

10

开始了 :

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

解释 :

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