sort() メソッドによる整列
数値の整列
Python に書いたように,Javascript の配列にも sort() メソッドがあり,Python と同じ Timsort なるアルゴリズムを用いて整列を行います.敢えて,ここで扱う必要はないのかもしれませんが,念のために Javascript でも並べ替えをしておきましょう.
sort ボタンをクリックすれば・・・あら~? おかしな並びになってしまいます.sort ボタンに紐付けた関数は次のとおりです.
var a = [100, 53, 19, 8, 81, 37, 16, 25, 44, 22];
function sorting1() {
a.sort();
document.getElementById('show1').innerHTML = a;
}
種明かしをいたしましょう.
Javascript の sort() メソッドは,配列を文字列として整列を行います.sort ボタンをクリックした後の並びを見ていただければ,文字列としては正しく昇順に整列されていることがお分かりなるでしょう.
Javascript の sort() メソッドは,比較関数なるものを指定する必要があります.次のとおりにすると,数値として昇順に整列することができます.
var cf = function(x, y) {
return x - y;
}
function sorting2() {
b.sort(cf);
document.getElementById('show2').innerHTML = b;
}
それでは,降順に並べたいときにはどのようにすれば宜しいでしょう? 返り値の x - y を y - x とします.この辺りは,あまり理屈を考えても仕方ないので,おまじないということにいたしましょう.
function sorting3() {
c.sort(function(x, y) {return y - x});
document.getElementById('show3').innerHTML = c;
}
この例では,比較関数を sort() メソッドの括弧内に書いてしまっています.スッキリしますね.
アロー関数を使うともっとスッキリします.
昇順:array.sort((x, y) => x - y);
降順:array.sort((x, y) => y - x);
文字列の整列
さて,数値の整列には少々の工夫が必要なのですが,文字列の整列は簡単な筈ですよね.やってみましょう.
d = ['Janpan', 'USA', 'Germany', 'England', 'France'];
function sorting4() {
d.sort();
document.getElementById('show4').innerHTML = d;
}
思い通りに整列することができました.
それでは,降順に並べるためにはどのようにすれば宜しいでしょうか? 当然,比較関数を適切に書けば実現できますが,reverse() という便利なメソッドがあります.これは,リストを逆順に並べ替えるというものです.
e = ['Janpan', 'USA', 'Germany', 'England', 'France'];
function sorting4() {
e.sort().reverse();
document.getElementById('show5').innerHTML = e;
}