我有一个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;
当前回答
上述部分的变化如下:
var objLength = function(obj){
var key,len=0;
for(key in obj){
len += Number( obj.hasOwnProperty(key) );
}
return len;
};
这是一种更优雅的方式来集成hasOwnProp。
其他回答
只需使用此项即可获得长度:
Object.keys(myObject).length
更新:如果您使用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;
};
我同样需要计算通过websocket接收的对象所使用的带宽。对我来说,只要找到Stringified对象的长度就足够了。
websocket.on('message', data => {
dataPerSecond += JSON.stringify(data).length;
}
最简单的方法如下:
Object.keys(myobject).length
其中myobject是您想要的长度的对象。
如果你知道你不必担心hasOwnProperty检查,你可以这样使用Object.keys()方法:
Object.keys(myArray).length