JavaScriptのObjectにはlengthがない!!

phiary に引っ越しました. 毎日プログラミングやWebに関する情報を発信しています! RSS 登録してたまに覗いたり, tweet やハテブして拡散してもらえると幸いです.

Pocket

みなさんこんなことをしたことはありませんか??
私は無知なのでやっちゃいました。

var obj = {hoge:0, fuga:1, piyo:2};

for (var i=0; i < obj.length; ++i) {
    ...
}

もちろんエラー

そう。JavaScriptのObjectにはlengthがないんです!!
まぁ確かにArrayとは違いObjectは連想配列なので、
“for (var key in obj) { … }”といった形でアクセスするので
必要ない気もする。

ですが、必要ないと思う前にカウントする関数作っちゃったんで載せておきます。

// プロパティ数を調べて返す
function getPropertyNum(obj)
{
    var len = 0;
    
    for (var key in obj) { ++len; }
    
    return len;
}

実際に使う場面といったら、 数というよりプロパティを持っているか否かのほうが重要な気がするので こちらも載せておきます。

// プロパティがあるかどうかを判定
function isHasProperty(obj)
{
    var flag = false;
    
    for (var key in obj) {
        flag = true; break;
    }
    
    return flag;
}

TRACK BACK URL

POST COMMENT

メールアドレスが公開されることはありません。

COMMENT