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 に答える