このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
Array.prototype.toSorted()
Baseline 2023Newly available
Since July 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
toSorted() はArray インスタンスのメソッドで、sort() メソッドに対応するコピーメソッドです。これは、要素を昇順にソートした新しい配列を返します。
In this article
構文
toSorted()toSorted(compareFn)引数
compareFn省略可要素の順序を決定する関数。省略した場合、配列の要素は文字列に変換され、各文字の Unicode コードポイントの値に従ってソートされます。詳細については、
sort()を参照してください。
返値
要素を昇順にソートした新しい配列です。
解説
compareFn 引数の情報についてはsort() を参照してください。
疎配列が使用された場合、toSorted() メソッドは空のスロットをundefined という値があるものとして反復処理します。
toSorted() メソッドは汎用です。this の値がlength プロパティを持っており、整数のキーのプロパティがあることのみを期待します。
例
>配列のソート
const months = ["Mar", "Jan", "Feb", "Dec"];const sortedMonths = months.toSorted();console.log(sortedMonths); // ['Dec', 'Feb', 'Jan', 'Mar']console.log(months); // ['Mar', 'Jan', 'Feb', 'Dec']const values = [1, 10, 21, 2];const sortedValues = values.toSorted((a, b) => a - b);console.log(sortedValues); // [1, 2, 10, 21]console.log(values); // [1, 10, 21, 2]他の利用例は、sort() を参照してください。
疎配列における toSorted() の使用
空のスロットは値がundefined であるかのようにソートされます。これらは常に配列の末尾にソートされ、compareFn は呼び出されません。
console.log(["a", "c", , "b"].toSorted()); // ['a', 'b', 'c', undefined]console.log([, undefined, "a", "b"].toSorted()); // ["a", "b", undefined, undefined]配列以外のオブジェクトに対する toSorted() の呼び出し
toSorted() メソッドはthis のlength プロパティを読み取ります。そして、length - 1 から0 までの整数のキーを持つ各プロパティを降順に訪れ、現在のプロパティの値を配列の末尾に追加して返します。
const arrayLike = { length: 3, unrelated: "foo", 0: 5, 2: 4, 3: 3, // length が 3 なので toSorted() からは無視される};console.log(Array.prototype.toSorted.call(arrayLike));// [4, 5, undefined]仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-array.prototype.tosorted> |