1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rails】sort_byメソッド,sortメソッド 【本日の積み上げ】

Posted at

本日の学習記録を、記録します。

sort_byメソッド, sortメソッド

指定した条件に基づいて、並び替えができる。

使い方

sort_byメソッド

数値配列の並び替え

example.rb
numbers = [3, 4, 5, 1, 2]
sorted_numbers = numbers.sort_by{ |number| numbers }
#任意の変数名(この中に並び替えられた配列が入る) = 配列が入っている変数名.sort_by{|ブロック変数|条件}
#デフォルトが昇順並び替え、降順にする際は{ |number| numbers }.reverseとする
p sorted_numbers # [1, 2, 3, 4, 5]

文字数の長さによって並び替え

example.rb
words = ["apple", "strawberry", "banana"]
sorted_words = words.sort_by{|word| word.length}

p sorted_words #["apple", "banana", "strawberry"]

ハッシュの配列を属性で並べ替える

example.rb
people = [
    {name: "太郎", age: 20},
    {name: "次郎", age: 18},
    {name: "三郎", age: 16}
]
sorted_people = people.sort_by{|person| person[:age]}

p sorted_people # [{name: "三郎", age: 16}, {name: "次郎", age: 18}, {name: "太郎", age: 20}]

sortメソッド

数値配列の並び替え

example.rb
numbers = [3, 4, 5, 1, 2]
sorted_numbers = numbers.sort#変数名.sort
#数字の昇順に並び替え
p sorted_numbers # [1, 2, 3, 4, 5]

文字数の長さによって並び替え

example.rb
words = ["apple", "strawberry", "banana"]
sorted_words = words.sort
#アルファベットの昇順
p sorted_words #["apple", "banana", "strawberry"]

シンプルに降順にしたい場合は、reserveを指定する

変数名 = 配列が入っている変数名.sort.reserve

条件指定したい時は、<=>演算子を利用する

#文字の長さで並び替えの場合
変数名 = 配列が入っている変数名.sort{ |a,b| a.length <=> b.length }#昇順
変数名 = 配列が入っている変数名.sort{ |a,b| b.length <=> a.length }#降順
特徴  sort_by sort
目的 特定の属性や計算結果に基づいて並び替え 配列全体の並び替え
使用方法 そのまま使うか、比較ブロックを渡す 並び替え基準をブロックで指定
速度 sort は全体の比較を行うため、要素数が多いと遅くなることがある sort_by は並び替え基準を先に計算するため、比較的高速

使い分けのポイント

・並び替えが簡単な場合(例:数値やアルファベット順):sort を使う
・特定の基準で並び替えたい場合(例:オブジェクトのプロパティに基づく並び替え):sort_by の方が効率的

たとえば、文字列の長さで並び替える場合、sort_by が適していますが、通常の昇順で並び替えたいだけであれば sort がシンプルで良い選択です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?