Javascript 查找对象中的键数
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/6723610/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Finding the number of keys in an object
提问by John Cooper
Possible Duplicate:
How to efficiently count the number of keys/properties of an object in JavaScript?
var values = [{
'SPO2': 222.00000,
'VitalGroupID': 1152,
'Temperature': 36.6666666666667,
'DateTimeTaken': '/Date(1301494335000-0400)/',
'UserID': 1,
'Height': 182.88,
'UserName': null,
'BloodPressureDiastolic': 80,
'Weight': 100909.090909091,
'TemperatureMethod': 'Oral',
'Resprate': null,
'HeartRate': 111,
'BloodPressurePosition': 'Standing',
'VitalSite': 'Popliteal',
'VitalID': 1135,
'Laterality': 'Right',
'HeartRateRegularity': 'Regular',
'HeadCircumference': '',
'BloodPressureSystolic': 120,
'CuffSize': 'XL'
}];
for (i=0; i < values.length; i++) {
alert(values.length) // gives me 2.
How can find how many keys my object has?
如何找到我的对象有多少个键?
回答by Petar Ivanov
var value = {
'SPO2': 222.00000,
'VitalGroupID': 1152,
'Temperature': 36.6666666666667,
'DateTimeTaken': '/Date(1301494335000-0400)/',
'UserID': 1,
'Height': 182.88,
'UserName': null,
'BloodPressureDiastolic': 80,
'Weight': 100909.090909091,
'TemperatureMethod': 'Oral',
'Resprate': null,
'HeartRate': 111,
'BloodPressurePosition': 'Standing',
'VitalSite': 'Popliteal',
'VitalID': 1135,
'Laterality': 'Right',
'HeartRateRegularity': 'Regular',
'HeadCircumference': '',
'BloodPressureSystolic': 120,
'CuffSize': 'XL'
};
alert(Object.keys(value).length);
回答by beardhatcode
try
尝试
Object.keys(values).length
see: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys
请参阅:https: //developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys
for compatiblity
为了兼容性
if(!Object.keys) Object.keys = function(o){
if (o !== Object(o))
throw new TypeError('Object.keys called on non-object');
var ret=[],p;
for(p in o) if(Object.prototype.hasOwnProperty.call(o,p)) ret.push(p);
return ret;
}
or use:
或使用:
function numKeys(o){
var i=0;
for(p in o) if(Object.prototype.hasOwnProperty.call(o,p)){ i++};
return i;
}
回答by phihag
function numKeys(o) {
var res = 0;
for (var k in o) {
if (o.hasOwnProperty(k)) res++;
}
return res;
}
or, in newer browsers:
或者,在较新的浏览器中:
function numKeys(o) {
return Object.keys(o).length;
}
In your example, values
is an array with one element, so you'd call numKeys(values[0])
to find out.
在您的示例中,values
是一个包含一个元素的数组,因此您可以致电numKeys(values[0])
查找。
回答by pimvdb
You can iterate and just count:
您可以迭代并计算:
var i = 0;
for(var key in values[0]) if(values[0].hasOwnProperty(key)) i++;
// now i is amount