JavaScript对象的长度

如果我有一个JavaScript对象,说

var myObject = new Object();
myObject["firstname"] = "Gareth";
myObject["lastname"] = "Simpson";
myObject["age"] = 21;

有没有一种内置的或被接受的最佳实践方式来获得这个对象的长度?


最强大的答案(即捕捉你想要做的事情的意图,同时导致最少的错误)将是:

Object.size = function(obj) {
    var size = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)) size++;
    }
    return size;
};

// Get the size of an object
var size = Object.size(myArray);

在JavaScript中有一种约定,你不会将事物添加到Object.prototype中,因为它可能会破坏各种库中的枚举。 不过,向Object添加方法通常是安全的。


这是2016年的更新以及ES5及其以后的广泛部署。 对于IE9 +和所有其他现代ES5 +浏览器,您可以使用Object.keys()以便上面的代码变成:

var size = Object.keys(myObj).length;

由于现在内置了Object.keys()因此不需要修改任何现有的原型。


如果你知道你不必担心hasOwnProperty检查,你可以很简单地做到这一点:

Object.keys(myArray).length

更新 :如果你使用的是Underscore.js(推荐,它是轻量级的!),那么你可以做

_.size({one : 1, two : 2, three : 3});
=> 3

如果不是 ,并且不想因为任何原因而乱搞Object属性,并且已经在使用jQuery,则插件同样可以访问:

$.assocArraySize = function(obj) {
    // http://stackoverflow.com/a/6700/11236
    var size = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)) size++;
    }
    return size;
};
链接地址: http://www.djcxy.com/p/703.html

上一篇: Length of a JavaScript object

下一篇: What is JavaScript garbage collection?