जाँच करें कि क्या कोई कुंजी किसी json ऑब्जेक्ट के अंदर मौजूद है


328
amt: "10.00"
email: "sam@gmail.com"
merchant_id: "sam"
mobileNo: "9874563210"
orderID: "123456"
passkey: "1234"

ऊपर JSON ऑब्जेक्ट है, जिसके साथ मैं काम कर रहा हूं। मैं जांच करना चाहता हूं कि 'मर्चेंट_आईडी' कुंजी मौजूद है या नहीं। मैंने नीचे दिए गए कोड की कोशिश की, लेकिन यह काम नहीं कर रहा है। इसे हासिल करने का कोई तरीका?

<script>
window.onload = function getApp()
{
  var thisSession = JSON.parse('<?php echo json_encode($_POST); ?>');
  //console.log(thisSession);
  if (!("merchant_id" in thisSession)==0)
  {
    // do nothing.
  }
  else 
  {
    alert("yeah");
  }
}
</script>

का आउटपुट क्या है <?php echo json_encode($_POST); ?>?
दाईवेई

इसका पुट वह है जो मैंने अपने प्रश्न के शीर्ष पर दिखाया है,
जोसन

1
का आउटपुट क्या है console.log(thisSession);?
दाईवेई

1
इसके अलावा, !("merchant_id" in thisSession)==0जहां आप बस उपयोग कर सकते हैं, वहां उपयोग करने का क्या लाभ है "merchant_id" in thisSession?
दाईवेई

जवाबों:


585

इसे इस्तेमाल करे,

if(thisSession.hasOwnProperty('merchant_id')){

}

जेएस वस्तु की thisSessionतरह होना चाहिए

{
amt: "10.00",
email: "sam@gmail.com",
merchant_id: "sam",
mobileNo: "9874563210",
orderID: "123456",
passkey: "1234"
}

आप यहाँ विवरण पा सकते हैं


6
संपादन के लिए, क्या, यदि कोई हो, क्या दृश्यों के पीछे अंतर है if(thisSession.merchant_id !== undefined)और if(thisSession.hasOwnProperty('merchant_id'))क्या यह वही काम कर रहा है?
शून्य २

2
@ zero298, दोनों समान नहीं हैं, hasOwnProperty का उपयोग करना सुरक्षित है ... अधिक जानकारी कृपया लिंक stackoverflow.com/questions/10895288/ पर
आनंद झा

error Do not access Object.prototype method 'hasOwnProperty' from target object इस पद्धति का उपयोग करते समय एस्लिंट त्रुटि को फेंकता है । विचार?
हैम्नचेज़

2
@hamncheez अगर JSON के पास 'hasOwnProperty' फ़ील्ड है, तो यह मूल फ़नल को छाया देगा। उपयोगObject.prototype.hasOwnProperty.call(thisSession, 'merchant_id')
Zmey

79

आपके इरादे के आधार पर, इसे करने के कई तरीके हैं।

thisSession.hasOwnProperty('merchant_id'); आपको बताएंगे कि क्या इस सत्र के पास वह कुंजी है (यानी ऐसा कुछ नहीं है जो इसे कहीं से विरासत में मिला है)

"merchant_id" in thisSession आपको बताएगा कि अगर इस सत्र में कुंजी है, भले ही यह कहां से मिला हो।

thisSession["merchant_id"]यदि कुंजी मौजूद नहीं है, या यदि इसका मान किसी भी कारण से गलत का मूल्यांकन करता है (जैसे कि यह एक शाब्दिक falseया पूर्णांक 0 और इसी तरह) है तो गलत वापस आ जाएगा ।


2
इस सत्र ["मर्चेंट_आईडी"] गलत नहीं होने पर अपरिभाषित लौटेगा।
p_champ

ठीक है, फिर "झूठा"।
पॉल

25

(मैं इस बात को इंगित करना चाहता था, भले ही मुझे पार्टी के लिए देर हो रही है)
मूल सवाल आप 'नॉट इन' को अनिवार्य रूप से खोजने की कोशिश कर रहे थे। ऐसा लगता है कि अनुसंधान (नीचे 2 लिंक) से समर्थित नहीं है जो मैं कर रहा था।

इसलिए यदि आप 'नॉट इन' करना चाहते हैं:

("merchant_id" in x)
true
("merchant_id_NotInObject" in x)
false 

मैं आपको उस अभिव्यक्ति == को सेट करने की सलाह दूंगा जो आप देख रहे हैं

if (("merchant_id" in thisSession)==false)
{
    // do nothing.
}
else 
{
    alert("yeah");
}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in http://www.w3schools.com/jsref/jsref_operators.asp


17

टाइप चेक भी काम करता है:

if(typeof Obj.property == "undefined"){
    // Assign value to the property here
    Obj.property = someValue;
}

8

यदि आपका बयान थोड़ा बदल जाता है और काम करता है (विरासत में मिली जानकारी के लिए - स्निपेट पर देखें)

if(!("merchant_id" in thisSession)) alert("yeah");


7

आप इस तरह कर सकते हैं:

if("merchant_id" in thisSession){ /** will return true if exist */
 console.log('Exist!');
}

या

if(thisSession["merchant_id"]){ /** will return its value if exist */
 console.log('Exist!');
}

0

अपरिभाषित और अशक्त वस्तुओं की जांच करने के लिए कार्य करते हैं

function elementCheck(objarray, callback) {
        var list_undefined = "";
        async.forEachOf(objarray, function (item, key, next_key) {
            console.log("item----->", item);
            console.log("key----->", key);
            if (item == undefined || item == '') {
                list_undefined = list_undefined + "" + key + "!!  ";
                next_key(null);
            } else {
                next_key(null);
            }
        }, function (next_key) {
            callback(list_undefined);
        })
    }

यहां यह जांचने का एक आसान तरीका है कि भेजी गई वस्तु में अपरिभाषित या अशक्त है या नहीं

var objarray={
"passenger_id":"59b64a2ad328b62e41f9050d",
"started_ride":"1",
"bus_id":"59b8f920e6f7b87b855393ca",
"route_id":"59b1333c36a6c342e132f5d5",
"start_location":"",
"stop_location":""
}
elementCheck(objarray,function(list){
console.log("list");
)

-13

तुम कोशिश कर सकते हो if(typeof object !== 'undefined')

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.