【JSリファレンス】Array.prototype.sort()

更新日:2024/06/14

Array.prototype.sort()は、Arrayオブジェクト(Arrayコンストラクターのインスタンス)のプロトタイプチェーンに組み込まれるメソッドです。
配列要素を昇順に並び替えますが、コールバック関数によるカスタマイズも可能です

※元となる配列の内容が変更されます。
同様の機能にArray.prototype.toSorted()がありますが、こちらは元となる配列の内容を変更しません。

欠番インデックスおよびundefinedは、コールバック関数呼び出しされません。
またコールバック関数の有無にかかわらず、ソート後の配列において、undefined、欠番の順で後方にセットされます。

 

■構文

Array.prototype.sort ( comparefn )
  1. comparefn: 省略可能。
    要素の比較を行う関数を指定する。
comparefnの結果により、配置を入れ替えた(ソートした)配列

 

■comparefnの構文

comparefn ( x , y ){ }
  1. x: 現在比較対象となっている要素の値
  2. y: 現在比較対象となっている要素の値
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

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://jsref.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。