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.
構文
js
toSorted()
toSorted(compareFn)
引数
compareFn
省略可-
ソート順を定義する関数を指定します。省略した場合は、配列の要素を文字列に変換し、 Unicode コードポイントの値に従って並べ替えます。
返値
要素を昇順にソートした新しい配列です。
解説
例
配列のソート
js
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
は呼び出されません。
js
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
までの整数のキーを持つ各プロパティを降順に訪れ、現在のプロパティの値を配列の末尾に追加して返します。
js
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 Language Specification # sec-array.prototype.tosorted |
ブラウザーの互換性
BCD tables only load in the browser