JavaScriptのsort

JavaScriptのsortの基本についてメモする。

配列はそのまま表示すると、カンマで区切られて表示される。

ars=new Array(1,3,2,5,4);
document.write(ars);

結果
1,3,2,5,4

ソートするには次のようにsortを使う。

ars=new Array(1,3,2,5,4);
ars.sort();
document.write(ars);

結果
1,2,3,4,5

特に指定しないと昇順になる。降順にするには次のように関数を指定する。

ars=new Array(1,3,2,5,4);
ars.sort(function(a,b){
    return(b-a);
});
document.write(ars);

結果
5,4,3,2,1

sortの引数に関数を指定すると複雑なソートが可能になる。
昇順にする場合には引数は不要であるが、あえて書くと次のようになる。

ars=new Array(1,3,2,5,4);
ars.sort(function(a,b){
    if(a>b){
        return(1);
    }else{
        return(-1);
    }
})
document.write(ars);

結果
1,2,3,4,5

「a,b」が降順ならば「a>b」なので入れ替える。このときは1を返す。
昇順ならば入れ替えない。このときは-1を返す。
このようなルールを関数の部分に定めればよい。

なおJScriptのマニュアルには次のように書かれている。

引数 sortFunction に指定する場合は、次の戻り値を返すような関数を指定する必要があります。

  • 1 つ目の引数が 2 つ目の引数よりも小さい場合は、負の値を返す関数。
  • 2 つの引数が等しい場合は 0 を返す関数。
  • 1 つ目の引数が 2 つ目の引数よりも大きい場合は、正の値を返す関数。

「0を返す」が必要なケースが思い浮かばない。

コメント

タイトルとURLをコピーしました