2011-06-08 21 views
10

Possible Duplicate:
Length of Javascript Associative Arrayगणना कुंजी/JSON में मान

मैं एक JSON है कि इस तरह दिखता है:

Object: 
    www.website1.com : "dogs" 
    www.website2.com : "cats" 
    >__proto__ : Object 

यह प्रिंट जब मैं इस कार्य करें:

console.log(obj); 

मैं पाने के लिए कोशिश कर रहा हूँ इस जेएसओएन के अंदर वस्तुओं की गिनती, obj.length रिटर्न "अपरिभाषित" और obj [0]। लम्बाई रिटर्न

Uncaught TypeError: Cannot read property 'length' of undefined

मुझे इस मामले में "2" लौटने की उम्मीद होगी। मैं गिनती कैसे पा सकता हूं?

धन्यवाद!

+0

देखें http://stackoverflow.com/questions/5223/length-of-javascript-associative-array –

+0

हाँ मैं हटा सकता हूं, शायद दूसरे प्रश्न को पीछे हटाना चाहिए, यह थोड़ा सा धोखा दे रहा है क्योंकि जेएस के पास भी नहीं है सहयोगी सरणी –

उत्तर

21

आप उन्हें अपने आप को गिनती करने के लिए है:

function count(obj) { 
    var count=0; 
    for(var prop in obj) { 
     if (obj.hasOwnProperty(prop)) { 
     ++count; 
     } 
    } 
    return count; 
} 

अब है कि मैं सवाल पर पहली टिप्पणी को देखा है, वहाँ उस पृष्ठ पर एक बहुत अच्छे जवाब है। एक-लाइनर, नहीं शायद बस के रूप में तेजी से करता है, तो तेजी से:

function count(obj) { return Object.keys(obj).length; } 

हालांकि यह ध्यान रखें, Object.keys() के लिए समर्थन बस अभी तक नहीं लगती पार ब्राउज़र।

+1

क्या आप 'ऑब्जेक्ट.की' को गिनती फ़ंक्शन पास करने का मतलब रखते थे? – Eric

+0

@ एरिक, नहीं, मुझे यकीन नहीं था। चीयर्स। – davin

+0

धन्यवाद, शायद यह अभी तक क्रॉस-ब्राउज़र नहीं है, लेकिन 'node.js' सर्वर पक्ष में अच्छी तरह से काम करता है;) – GabLeRoux

2

.length केवल ऑब्जेक्ट्स पर काम करता है, ऑब्जेक्ट्स नहीं।

var count = 0; 
for(var key in json) 
    if(json.hasOwnProperty(key)) 
     count++; 
संबंधित मुद्दे