SitePoint: New Articles, Fresh Thinking for Web Developers and Designers

WebページやWebアプリケーションを開発するにあたってJavaScriptは欠かすことができないプログラミング言語になりつつある。ブラウザさえあれば簡単に使い出すことができて、それなりにすぐに効果が見込める。しかし、検索してもまとまった優れたチュートリアルやAPIマニュアルにたどり着きにくいというプログラミング言語でもある。Mozillaがこの状況を変えようと取り組みを開始したことは、この状況のひとつの側面を示唆している。

しかし逆に見ると、毎日さまざまなブログでテクニックやティップを得やすいプログラミング言語だともいえる。すでにある程度のプログラミングの経験があるなら、JavaScriptはそうしたスニペットやティップを積み重ねて使っていくのもひとつの方法といえる。

そうしたティップのひとつになるが、SitePointに掲載されたCraig Buckler氏の記事Sorting out JavaScript Array Sortingが、JavaScriptのsort()の動作を紹介するものとして参考になる。短い記事に必要な説明がまとまっており興味深い。Craig Buckler氏はまず次のようなJavaScriptのコードを紹介。

var num = [5,3,17,10,7];
num.sort();

整列後の数列が得られそうなものだが、numの内容は次のようになっている。

10,17,3,5,7

これはsort()の引数になにも指定しない場合、対象を文字列として認識し、文字並びとして並び替えを実施するからだ。先程の数を文字として比較して整列したものが、上記の並び順ということになる。数値として比較させるには、次のようにsort()の引数にコンパレータを渡せばいい。

var num = [5,3,17,10,7];
num.sort(function(a,b) {return a-b;});

数として比較が実施され、次の並び順を得ることができる。

3,5,7,10,17

コンパレータを渡すことができるのでさまざまな対象に対して柔軟で強力な整列処理を実施できる。これがJavaScript sort()のお手軽で魅力的なところといえる。

JavaScriptの挙動を調べたい場合、ブラウザが提供しているJavaScriptコンソールを使って調査してもいいし、JavaScriptエンジン単体をインストールして挙動のみを調べるという方法もある。たとえばFirefoxのJavaScriptエンジンであるSpiderMonkeyをシステムにインストールしておけば、次のようなスクリプトを作成することで挙動をチェックできる。

#!/usr/local/bin/js
var num = [5,3,17,10,7];
num.sort();
print(num);

ここでは標準出力へ出力するために用意されているprint()を使って中身を確認している。スクリプトとしてファイルにまとめなくとも、インタラクティブに動作させて確認することもできる。