とても”奇妙”なJavaScriptの配列:JavaやCとは違うのだよ

白石俊平(あゆた)
2008-02-07 11:00:00
JavaやCとは全く異なるJavaScriptの配列。これをわかりやすく整理してみた。
最新特集【一覧】

in演算子で配列を走査することも可能!

 通常、配列をループ処理すると言えば以下のようにしますね。lengthプロパティで配列の長さを取得し、その回数分ループします。

    for (var i = 0, n = a.length; i < n; i++) {
        ...
    }

 しかしJavaScriptの配列は、通常のオブジェクトとほとんど変わりがないのでした。では、オブジェクトのプロパティを列挙するための演算子、「in」を用いてループすることもできるのではないでしょうか?

 その通りです。

 オブジェクトに格納されている配列の添え字を、以下のようにして次々と取り出し、ループ処理することが可能です。

    var a = ["a", "b", "c"];

    // indexには「0, 1, 2」という値が入る
    for (var index in a) {
        alert(a[index]);
    }

 in演算子を用いたループ処理は、ある特定のシチュエーションでは、通常のループ処理よりもパフォーマンスの向上に役立ちます。その話題は、次回のお楽しみと言うことにしましょう。

まとめ

 今回は、JavaScriptの配列はむしろハッシュテーブル(JavaScriptオブジェクト)であり、配列の添え字はハッシュのキーなのだ、と言うお話をしました。この事実は、JavaScriptのパフォーマンスチューニングをする際などには必須の知識です。必ず押さえておきましょう。

 さて、今回は字数の都合でここまで。次回は配列編の最後として、普段皆さんが使用している「配列.length」は、実はとても奇妙なプロパティであると言うことをお話ししたいと思います。