Array.prototype.toSorted()
構文
js
toSorted()
toSorted(compareFn)
引数
compareFn
省略可-
ソート順を定義する関数を指定します。省略した場合は、配列の要素を文字列に変換し、 Unicode コードポイントの値に従って並べ替えます。
a
-
比較する最初の要素です。
b
-
比較する 2 番目の要素です。
返値
要素を昇順にソートした新しい配列です。
解説
例
配列のソート
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