[Ruby]配列(array)を降順(大きい順)にソートして並び替えるには?

Ruby

どうも、ちょげ(@chogetarou)です。

配列(array)を降順(大きい順)にソートして並び替える方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

配列(array)を降順(大きい順)にソートして並び替える方法は、2つあります。

sortメソッド

1つは、sortメソッドを使う方法です。

まず、配列からsortメソッドを呼び出します。

そして、sortメソッドに「{ |a, b| b <=> a }」を渡します。

#arr=対象の配列
result = arr.sort { |a, b| b <=> a }

上記のsortメソッドは、呼び出した配列(array)を降順(大きい順)にソートして並び替えた配列を生成します。

もし、新しい配列を生成せず、呼び出した配列を変更したい場合は、sort!メソッドを使います。

arr.sort! { |a, b| b <=> a }

使用例1

numbers = [2, 10, 37, 29, 5, 1, 19]

result = numbers.sort { |a, b| b <=> a }

p result
出力:
[37, 29, 19, 10, 5, 2, 1]

使用例2

numbers = [2, 10, 37, 29, 5, 1, 19]

numbers.sort! { |a, b| b <=> a }

p numbers
出力:
[37, 29, 19, 10, 5, 2, 1]

sort_byメソッド

もう1つは、sort_byメソッドを使う方法です。

まず、配列からsort_byメソッドを呼び出します。

sort_byメソッドに比較対象を返すブロックを渡します。

ブロックで比較対象の先頭に「-」をつけます。

#arr=対象の配列, x=比較対象
result = arr.sort_by { |item| -x }

上記のsort_byメソッドは、配列(array)を比較対象で降順(大きい順)にソートして並び替えた配列を生成します。

もし、新しい配列を生成せず、呼び出した配列を変更したい場合は、sort_by!メソッドを使います。

arr.sort_by! { |item| -x }

使用例1

alp = ["DEF", "A", "LMNOP", "BC", "HIJK"]

result = alp.sort_by { |item| -item.length }

p result
出力:
["LMNOP", "HIJK", "DEF", "BC", "A"]

使用例2

alp = ["DEF", "A", "LMNOP", "BC", "HIJK"]

alp.sort_by! { |item| -item.length }

p alp
出力:
["LMNOP", "HIJK", "DEF", "BC", "A"]

まとめ

配列(array)を降順(大きい順)にソートして並び替える方法は、2つあります。

  • sortメソッドを使う方法
    result = arr.sort { |a, b| b <=> a }
  • sort_byメソッドを使う方法
    result = arr.sort_by { |item| -x }

コメント

タイトルとURLをコピーしました