【javascript】連想配列でサイズを取得する

javascriptで下記の様な変数があったとします。

var fruits = { 0:"banana" , 1:"orange" , 2:"grape" };

この連想配列のサイズ(3)を取得したい場合はどうすれば良いのでしょうか?
そうです、lengthは使えません。
一時的に下記のような解決方法に至りました。

var count = 0;
for (var i in fruits) count++;

このcountが要素数です。
…が、なんかすごいダサいです。
もうちょっと調べてたらようやく出て来ました。

javascript 連想配列(オブジェクト)の要素数が知りたい。

var count = Object.keys(fruits).length;

これだ!

と言う事でObject.keysを使って解決したのでした。

誰かのお役に立てば。

コメント

  1. iYU より:

    いつもこっそり見させてもらってます!今回JSだったので小ネタを投下させて頂きますw

    連想配列のサイズを取得するにはObject.keysを使うのであっているのですが、for inには罠があり違う数値になるケースもあります。下記例です。

    function ClassA() { this.a = null; }
    function ClassB() { this.b = null; }
    ClassB.prototype = new ClassA();

    var instanceB = new ClassB();

    var count = 0;
    for (var i in instanceB) count++;

    console.log(instanceB);
    console.log('count:', count);
    console.log('Object.keys:', Object.keys(instanceB).length);
    //-- output --
    // nodejs-v0.10系の場合: { b: null }, 現chromeコンソールの場合: ClassB {b: null, a: null}
    // count: 2
    // Object.keys: 1

タイトルとURLをコピーしました