質問: ``` ["アメリカ", "オーストラリア", "日本", "ロシア"] ``` という配列があったとして、この中で最も文字数が少ないものだけを表示させたいのですが、その方法がわかりません。 この場合、「日本」だけを抽出したいです。 どなたか教えていただけると嬉しいです。
回答: ``` $ pry [1] pry(main)> a = ["アメリカ", "オーストラリア", "日本", "ロシア"] => ["アメリカ", "オーストラリア", "日本", "ロシア"] [2] pry(main)> a.group_by(&:length).sort.first[1] => ["日本"] [3] pry(main)> a = ["アメリカ", "オーストラリア", "日本", "ロシア", "中国"] => ["アメリカ", "オーストラリア", "日本", "ロシア", "中国"] [4] pry(main)> a.group_by(&:length).sort.first[1] => ["日本", "中国"] [5] pry(main)> len = a.map(&:length).min => 2 [6] pry(main)> a.select{|x| x.length == len} => ["日本", "中国"] ``` この方法では、一番短いものが複数あった場合、それらをすべて表示します。