5

私は次のオブジェクトを持っています:

var l={"a":1,"b":2,"c":5};

これの長さを知りたい

alert(l.length);

しかし、それはを返しますundefined。明らかに、私は3答えとして得たいと思っています。

4

3 に答える 3

11

Object.keys()オブジェクト内のキーの配列を返すを使用して、オブジェクト内のエントリの数を数えることができます。

var l = {a: 1, b: 2, c: 3};
Object.keys(l).length;

ただし、独自のプロパティを実装する方が効率的(およびクロスブラウザ)である可能性があります。

Object.length = function(obj) {
    var i = 0;
    for(var key in obj) i++;
    return i;
}

Object.length(l);

関数をとして定義してObject.prototype.length、記述できるようにすることもできますがl.length()、オブジェクトがキーをコンテナ化すると失敗するため、記述しなかったことに注意してくださいlength

于 2012-05-17T18:35:31.253 に答える
1
var l={"a":1,"b":2,"c":5};
Object.keys(l).length;
于 2012-05-17T18:34:21.013 に答える
1
function count(O){
    for(var p in O){
        if(O.hasOwnProperty(p))++cnt;
    }
    return cnt;
}
count(l);
于 2012-05-17T18:48:36.513 に答える