nantekkotai's blog

おもに技術とお仕事に関連することを書いています。

JavaScriptのオブジェクトはlengthが使えません

何当たり前のこと云ってんだとかはなしで。毎度毎度忘れてしまうのですよ。。。

例えばPythonなら、

obj = {'mukku':'red', 'gachapin':'green', 'Pchan', 'p'}
len(obj) # => 3

Rubyだと、

obj = {'mukku' => 'red', 'gachapin' => 'green', 'Pchan' => 'P'}
obj.length # => 3

ところがJavaScriptだとundefinedが返ってきます。

var obj = {'mukku':'red', 'gachapin':'green', 'Pchan':'P'};
obj.length // => undefined

なのでObjectの数を取得する場合にはわざわざループループな感じで取得しないといけません。面倒ですね。

var count = function(obj) {
    var cnt = 0;
    for (var key in obj) {
        cnt++;
    }
    return cnt;
}
count({'tomato':'red', 'mikan':'orange'});    //  => 2

うっかり、Object.lengthと書いてしまって、潜在的なバグを生み出す結果になるわけです。注意。