2012-07-14 9 views
29

मेरे पास एक ऐसा फ़ंक्शन है जो यह देखने के लिए जांच करता है कि अनुरोध के पास कोई प्रश्न है या नहीं, और उस पर आधारित विभिन्न कार्य करता है। वर्तमान में, मेरे पास if(query) है और यह कुछ और करें। हालांकि, ऐसा लगता है कि जब कोई क्वेरी डेटा नहीं है, तो मैं {} JSON ऑब्जेक्ट के साथ समाप्त होता हूं। इस प्रकार, मुझे if(query)if(query.isEmpty()) या उस तरह के कुछ के साथ प्रतिस्थापित करने की आवश्यकता है। क्या कोई बता सकता है कि मैं नोडजेएस में ऐसा करने के बारे में कैसे जा सकता हूं? क्या V8 JSON ऑब्जेक्ट में इस प्रकार की कोई कार्यक्षमता है?मैं कैसे जांच सकता हूं कि कोई जेएसओएन नोडजेएस में खाली है या नहीं?

// This should work in node.js and other ES5 compliant implementations. 
function isEmptyObject(obj) { 
    return !Object.keys(obj).length; 
} 

// This should work both there and elsewhere. 
function isEmptyObject(obj) { 
    for (var key in obj) { 
    if (Object.prototype.hasOwnProperty.call(obj, key)) { 
     return false; 
    } 
    } 
    return true; 
} 

उदाहरण उपयोग:

+0

'if (0 MilkyWayJoe

+1

naaa, query.length == अपरिभाषित। लंबाई एक ऐरे ऑब्जेक्ट में मानक है, जेएसओएन ऑब्जेक्ट नहीं। – thisissami

उत्तर

59

आप इन कार्यों में से किसी का उपयोग कर सकते

if (isEmptyObject(query)) { 
    // There are no queries. 
} else { 
    // There is at least one query, 
    // or at least the query object is not empty. 
} 
+0

अच्छा ... दूसरा एक नोड में अच्छी तरह से काम करता है ... – Nav

16

आप उपयोग कर सकते हैं इस:

var isEmpty = function(obj) { 
    return Object.keys(obj).length === 0; 
} 

या इस:

function isEmpty(obj) { 
    return !Object.keys(obj).length > 0; 
} 

आप भी इस का उपयोग कर सकते हैं:

function isEmpty(obj) { 
    for(var prop in obj) { 
    if(obj.hasOwnProperty(prop)) 
     return false; 
    } 

    return true; 
} 

underscore या jQuery का उपयोग कर रहे हैं, तो आप अपने isEmpty या isEmptyObject कॉल का उपयोग कर सकते हैं।

3

देर से खेल में, लेकिन मैं एक और तरीका का उपयोग कर रहा हूं जो मुझे "उचित" समाधान नहीं होने पर भी अधिक पसंद है।

JSON.stringify(obj) === '{}' 

मैं जानता हूँ कि इस दृष्टिकोण बुरा समीक्षा हो सकती है, क्योंकि मैं यह सोचते हैं रहा हूँ खाली वस्तु की वह स्ट्रिंग प्रतिनिधित्व {} है (और क्या अगर यह { } था) - लेकिन मैं एक समारोह के बिना यह आसान इस तरह से खोजने के लिए और इसे करने के लिए लगता है मेरे लिए ठीक काम करो।

+1

हालांकि पहले व्यक्ति को आजमाया नहीं गया है, इसके कई कारण हैं, यह प्रदर्शन सहित एक अच्छा समाधान नहीं है, और विभिन्न तरीकों से वस्तुओं को स्ट्रिंग किया जा सकता है उदाहरण के लिए, गुणों के साथ 'त्रुटि' को स्ट्रिंग करें। –

+0

@ डेव न्यूटन, मैं सहमत हूं कि यह एक अच्छा समाधान नहीं है। मैं बताता हूं कि मेरे जवाब में। मैं 'ऑब्जेक्ट.कीज (ओबीजे) के बाद त्रुटि उदाहरण के बारे में सहमत नहीं हूं। लम्बाई === 0' खाली भी वापस आ जाएगा, इसलिए इस परिदृश्य में यह समाधान अभी भी सही है। –

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

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