Array.prototype.toSorted()
Baseline
2023
Newly 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()
メソッドに対応するコピーメソッドです。これは、要素を昇順にソートした新しい配列を返します。
構文
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> |
ブラウザーの互換性
Loading…