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を使って解決したのでした。
誰かのお役に立てば。
コメント
いつもこっそり見させてもらってます!今回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