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(),但我没有,因为如果您的对象容器是 key ,那将失败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 回答