JavaScriptで配列の要素をソートした新しい配列を返すtoSorted
メソッドについて書いています。
toSorted
メソッドを使うと、元の配列を変更せずに、要素がソートされた新しい配列を作成できます。
配列をソートして別の処理に渡したり、ソート前の配列も保持しておきたい場合に便利です。
実際に動くサンプルを使って、以下の操作を解説します。
・`toSorted`メソッドの引数でソート順を変える
・`toSorted`メソッドを使うメリット
・`sort`メソッドとの違い
toSortedメソッドの基本的な使い方
toSorted
メソッドは、配列の要素をソートした新しい配列を返します。
元の配列は変更されません。
基本的な構文は以下のとおりです。
array.toSorted(compareFn)
compareFn
: ソート順を定義する関数(省略可能)。
配列要素をソートした新しい配列を作成する
toSorted
メソッドを使って、数値の配列をソートして、新しい配列を作って返してみます。
const numbers = [3, 1, 4, 2];
const sortedNumbers = numbers.toSorted();
console.log(numbers); // 結果:[3, 1, 4, 2] (元の配列は変わらない)
console.log(sortedNumbers); // 結果:[1, 2, 3, 4] (新しい配列)
numbers
配列を作成して、次の処理でtoSorted
メソッドを呼び出しています。
こうすることで、配列の要素がtoSorted
メソッドによって昇順にソートされ、新しい配列sortedNumbers
が作成されています。
元のnumbers
配列は変更されていません。
文字列の配列をソートする
文字列の配列をソートしてみます。
const fruits = ['orange', 'apple', 'banana'];
const sortedFruits = fruits.toSorted();
console.log(sortedFruits); // 結果:['apple', 'banana', 'orange']
fruits
配列を作成して、toSorted
メソッドでソートしました。
文字列の配列もソートされることが確認できました。
toSortedメソッドの引数でソート順を変える
toSorted
メソッドの引数compareFn
は、ソート順を定義する関数です。
省略した場合は、昇順にソートされます。
const numbers = [3, 1, 4, 2];
const sortedNumbersDescending = numbers.toSorted((a, b) => b - a);
console.log(sortedNumbersDescending); // 結果:[4, 3, 2, 1] (降順にソート)
compareFn
として「(a, b) => b - a
」という関数を渡しています。
この関数は、「b - a
」の値を返すことで、aとbの大小関係を逆転させています。
つまり、b
が大きい場合は正の数を返し、a
が大きい場合は負の数を返すため、結果として降順にソートされます。
下記のように処理結果を出力すると、わかりやすいです。
const numbers = [3, 1, 4, 2];
const sortedNumbersDescending = numbers.toSorted((a, b) => {
console.log(`比較: a = ${a}, b = ${b}, b - a = ${b - a}`);
return b - a; // 降順ソート
});
console.log("元の配列:", numbers);
console.log("ソート後の配列:", sortedNumbersDescending);
出力すると、下記のようになります。
比較: a = 1, b = 3, b - a = 2
比較: a = 4, b = 1, b - a = -3
比較: a = 4, b = 3, b - a = -1
比較: a = 2, b = 3, b - a = 1
比較: a = 2, b = 1, b - a = -1
元の配列: [3, 1, 4, 2]
ソート後の配列: [4, 3, 2, 1]
compareFn
を理解するポイントは、2つの要素を比較してソート順を決定するという点です。
compareFn
の戻り値によって、要素の並び順がどのように変わるかを意識することで、より柔軟なソートを実現できます。
toSortedメソッドを使うメリット
toSorted
メソッドを使う主なメリットは以下のとおりです。
- 元の配列を変更せずにソートされた新しい配列を作成できる: 元の配列を変更せずに、ソートされた新しい配列を作成できます。
- 可読性の向上:
toSorted
メソッドを使うことで、配列をソートする処理がより明確になり、コードの可読性が向上します。
sortメソッドとの違い
配列の要素をソートするメソッドとしては、sort
メソッドも存在します。
sort
メソッドは、元の配列を直接変更するのに対し、toSorted
メソッドは元の配列を変更せずに新しい配列を返す点が異なります。
メソッド | 処理内容 | 元の配列 |
---|---|---|
sort |
配列の要素をソートする | 変更される |
toSorted |
ソートされた新しい配列を返す | 変更されない |
どちらのメソッドを使うかは、元の配列を変更したいかどうかによって選択する必要があります。
JavaScriptのtoSortedメソッドの使い方まとめ
今回はJavaScriptのtoSorted
メソッドの使い方について書きました。
記事の内容をまとめます。
・元の配列は変更されない。
・`sort`メソッドは元の配列を直接変更する。
コメント