我有一个JavaScript对象。是否有一种内置或公认的最佳实践方法来获取此对象的长度?
const myObject = new Object();
myObject["firstname"] = "Gareth";
myObject["lastname"] = "Simpson";
myObject["age"] = 21;
我有一个JavaScript对象。是否有一种内置或公认的最佳实践方法来获取此对象的长度?
const myObject = new Object();
myObject["firstname"] = "Gareth";
myObject["lastname"] = "Simpson";
myObject["age"] = 21;
当前回答
Try:Object.values(theObject).length
const myObject=新对象();myObject[“firstname”]=“Gareth”;myObject[“lastname”]=“Simpson”;myObject[“age”]=21;console.log(Object.values(myObject).length);
其他回答
所有物
Object.defineProperty(Object.prototype, 'length', {
get: function () {
var size = 0, key;
for (key in this)
if (this.hasOwnProperty(key))
size++;
return size;
}
});
Use
var o = {a: 1, b: 2, c: 3};
alert(o.length); // <-- 3
o['foo'] = 123;
alert(o.length); // <-- 4
上述部分的变化如下:
var objLength = function(obj){
var key,len=0;
for(key in obj){
len += Number( obj.hasOwnProperty(key) );
}
return len;
};
这是一种更优雅的方式来集成hasOwnProp。
最简单的方法如下:
Object.keys(myobject).length
其中myobject是您想要的长度的对象。
更新:如果您使用Undercore.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;
};
这是最跨浏览器的解决方案。
这比接受的答案更好,因为它使用本机Object.keys(如果存在)。因此,它是所有现代浏览器中速度最快的。
if (!Object.keys) {
Object.keys = function (obj) {
var arr = [],
key;
for (key in obj) {
if (obj.hasOwnProperty(key)) {
arr.push(key);
}
}
return arr;
};
}
Object.keys(obj).length;