tag icon español change javascript

javascript - icon - title html



Encontrar el número de claves en un objeto (4)

Posible duplicado:
¿Cómo contar de manera eficiente el número de claves / propiedades de un objeto en 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.

¿Cómo puedo encontrar cuántas llaves tiene mi objeto?


Puedes iterar y solo contar:

var i = 0; for(var key in values[0]) if(values[0].hasOwnProperty(key)) i++; // now i is amount


tratar

Object.keys(values).length

consulte: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys

por compatibilidad

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; }

o usar:

function numKeys(o){ var i=0; for(p in o) if(Object.prototype.hasOwnProperty.call(o,p)){ i++}; return i; }


function numKeys(o) { var res = 0; for (var k in o) { if (o.hasOwnProperty(k)) res++; } return res; }

o, en los navegadores más nuevos:

function numKeys(o) { return Object.keys(o).length; }

En su ejemplo, los values son una matriz con un elemento, por lo que debería llamar a numKeys(values[0]) para averiguarlo.


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);