2010-08-06 6 views
26

संभव डुप्लिकेट:
How do I test for an empty Javascript object from JSON?जावास्क्रिप्ट: जांच की जा रही है, तो एक वस्तु कोई प्रॉपर्टी नहीं है या यदि कोई नक्शा/साहचर्य सरणी रिक्त है

वहाँ एक वस्तु है, तो जाँच करने के लिए एक आसान तरीका है जावास्क्रिप्ट में कोई गुण नहीं है? या दूसरे शब्दों में, यह जांचने का एक आसान तरीका है कि कोई नक्शा/सहयोगी सरणी खाली है या नहीं?

var nothingHere = {}; 
var somethingHere = {foo: "bar"}; 

वहाँ एक आसान तरीका है जो एक "खाली" है बताने के लिए है: उदाहरण के लिए, मान लीजिए कि आप था निम्नलिखित है? केवल एक चीज मैं के बारे में सोच सकते हैं कुछ इस तरह है:

function isEmpty(map) { 
    var empty = true; 

    for(var key in map) { 
     empty = false; 
     break; 
    } 

    return empty; 
} 

वहाँ एक बेहतर तरीका (एक देशी संपत्ति/समारोह या कुछ और की तरह) है?

+0

डुपे - http://stackoverflow.com/questions/5223/length-of-javascript-associative-array –

+0

@Daniel - उस प्रश्न के लिंक के लिए धन्यवाद। मैंने एसओ पर खोज करने की कोशिश की लेकिन मुझे कुछ भी नहीं मिला। मोड - कृपया इस सवाल को बंद करें। धन्यवाद! –

+0

हैऑनप्रॉपर्टी कॉल के कारण मैं आपके ऊपर क्रिसमस के समाधान के साथ जाऊंगा। यदि कुछ भी ऑब्जेक्ट प्रोटोटाइप (कुछ पुस्तकालयों में कुछ करता है) बढ़ाता है, तो आपकी विधि अब सही परिणाम नहीं लौटाएगी क्योंकि यह विरासत गुणों को पढ़ेगी। –

उत्तर

40

इस प्रयास करें:

function isEmpty(map) { 
    for(var key in map) { 
     return !map.hasOwnProperty(key); 
    } 
    return true; 
} 

आपका समाधान काम करता है, भी, लेकिन केवल अगर कोई Object प्रोटोटाइप का विस्तार पुस्तकालय है। यह पर्याप्त अच्छा हो सकता है या नहीं भी हो सकता है।

+0

'ऑब्जेक्ट' प्रोटोटाइप के साथ किसी भी पुस्तकालय गड़बड़ कर रहे हैं, तो 'हैऑनप्रोपर्टी' कॉल यहां बहुत महत्वपूर्ण है। +1 –

+0

धन्यवाद। मैंने समाधान में टिप्पणी डाली - मैंने थोड़ी देर के लिए हैऑनप्रोटोटाइप कॉल अपनाया था और अब भी इसके बारे में सोच नहीं रहा था। – chryss

+1

आपने कभी भी इसके बारे में कभी भी सोचना नहीं है और वास्तव में आपने इसे ओनप्रोटोटाइप कहा है। जबरदस्त हंसी – Zo72

संबंधित मुद्दे