【JSリファレンス】Array.prototype.sort()
更新日:2024/06/14
Array.prototype.sort()は、Arrayオブジェクト(Arrayコンストラクターのインスタンス)のプロトタイプチェーンに組み込まれるメソッドです。
配列要素を昇順に並び替えますが、コールバック関数によるカスタマイズも可能です
※元となる配列の内容が変更されます。
同様の機能にArray.prototype.toSorted()がありますが、こちらは元となる配列の内容を変更しません。
欠番インデックスおよびundefinedは、コールバック関数呼び出しされません。
またコールバック関数の有無にかかわらず、ソート後の配列において、undefined、欠番の順で後方にセットされます。
■構文
Array.prototype.sort ( comparefn )
- comparefn: 省略可能。
要素の比較を行う関数を指定する。
■comparefnの構文
comparefn ( x , y ){ }
- x: 現在比較対象となっている要素の値
- y: 現在比較対象となっている要素の値
大小関係 | 戻り値 |
---|---|
y の方が大きい( x < y ) | 負の値 |
x の方が大きい( x < y ) | 正の値 |
同じ値( x = y ) | 0 |
comparefnの省略時は、抽象比較 x < y が true なら -1、x > y が true なら 1、それ以外なら 0 をcomparefnが返したとみなす。
■使用例
▶ x - y の結果を返すと昇順ソート
const array = [,5,undefined,,2,7];
array.sort(
(x,y)=> x - y
);
console.log( array ); // [ 2, 5, 7, undefined, <2 empty items> ]
▶ (x - y) * -1 の結果を返すと降順ソート
const array = [,5,undefined,,2,7];
array.sort(
(x,y)=> (x - y) * -1 // (x,y)=> y - x でもOK
);
console.log( array ); // [ 7, 5, 2, undefined, <2 empty items> ]
▶ オブジェクトをソート
const objArray =[
{ value:5 },{ value:2 },{ value:7 },{ value:1 }
];
objArray.sort(
(a,b)=>a.value - b.value
);
console.log( objArray );
// [ { value: 1 }, { value: 2 }, { value: 5 }, { value: 7 } ]
■備考
call()等でアレイライクオブジェクトを対象にすることも可能です。
const arrayLike = { 0:3 ,1:1 , 2:7, length:3 };
Array.prototype.sort.call( arrayLike, (x,y)=>x-y );
console.log( arrayLike ); // { '0': 1, '1': 3, '2': 7, length: 3 }
関連ページ
更新日:2024/06/14
スポンサーリンク
記事の内容について

こんにちはけーちゃんです。
説明するのって難しいですね。
「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。
裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。
掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。
ご意見、ご指摘はこちら。
https://jsref.affi-sapo-sv.com/info.php
このサイトは、リンクフリーです。大歓迎です。