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