2011-07-17 16 views
20

Powiel możliwe:
How to efficiently count the number of keys/properties of an object in JavaScript?Znalezienie liczbę kluczy w obiekcie

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. 

Jak można znaleźć ilu klucze mój obiekt ma?

+1

Dwie rzeczy: 1) Dlaczego przechodzisz przez 'values.length', ale również ostrzegasz' values.length'? 2) Przysięgam, że "values.length" nie da ci 2. – BoltClock

+0

http://stackoverflow.com/questions/5223/length-of-javascript-associative-array – felix

+0

Po komentarzu @ BoltClock's, ['alert (values.length); 'daje:' 1'] (http://jsfiddle.net/davidThomas/UvthC/). I, nawiasem mówiąc, z mojego własnego treningu, nasycone częściowe ciśnienie tętnicze tlenu ("SPO2"), powinno być procentową wartością aż do "100" (procent, oczywiście). Skąd pochodzi "222,000"? Nie zamierzam być konfrontacyjny, ale jestem ** ciekawy ... =) –

Odpowiedz

66
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); 
+0

Jak mogę znaleźć całkowitą liczbę kluczy, jeśli obiekt znajduje się wewnątrz tablicy –

-2

Można iteracyjne i po prostu policzyć:

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

Obejmuje to właściwości zdefiniowane przez prototyp obiektu – phihag

+0

@phihag: Masz rację, ale nie powinieneś rozszerzać 'Object.prototype' tak czy inaczej. – pimvdb

+1

@pimvdb rzeczywiście nie powinieneś, ale powinieneś zaprogramować defensywnie na wypadek, gdyby jedna z bibliotek, z których korzystasz miała. – Alnitak

5

spróbować

Object.keys(values).length 

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

dla Kompatybilność

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

lub użytkowania:

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

dodano kod zgodności – beardhatcode

+2

, który należy przypisać do jego źródła ... – Alnitak

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

lub w nowszych przeglądarek:

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

W przykładzie values jest tablicą z jednego elementu, tak że zadzwonisz numKeys(values[0]) się dowiedzieć.

+1

# 2 powinien być "Object.keys (o) .length" – Alnitak

+0

@Alnitak Dzięki, naprawione. – phihag

Powiązane problemy