amt: "10.00"
email: "[email protected]"
merchant_id: "sam"
mobileNo: "9874563210"
orderID: "123456"
passkey: "1234"
The above is the JSON object I'm dealing with. I want to check if the 'merchant_id' key exists. I tried the below code, but it's not working. Any way to achieve it?
<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>
This question is related to
javascript
json
I change your if statement slightly and works (also for inherited obj - look on snippet)
if(!("merchant_id" in thisSession)) alert("yeah");
var sessionA = {_x000D_
amt: "10.00",_x000D_
email: "[email protected]",_x000D_
merchant_id: "sam",_x000D_
mobileNo: "9874563210",_x000D_
orderID: "123456",_x000D_
passkey: "1234",_x000D_
}_x000D_
_x000D_
var sessionB = {_x000D_
amt: "10.00",_x000D_
email: "[email protected]",_x000D_
mobileNo: "9874563210",_x000D_
orderID: "123456",_x000D_
passkey: "1234",_x000D_
}_x000D_
_x000D_
_x000D_
var sessionCfromA = Object.create(sessionA); // inheritance_x000D_
sessionCfromA.name = 'john';_x000D_
_x000D_
_x000D_
if (!("merchant_id" in sessionA)) alert("merchant_id not in sessionA");_x000D_
if (!("merchant_id" in sessionB)) alert("merchant_id not in sessionB");_x000D_
if (!("merchant_id" in sessionCfromA)) alert("merchant_id not in sessionCfromA");_x000D_
_x000D_
if ("merchant_id" in sessionA) alert("merchant_id in sessionA");_x000D_
if ("merchant_id" in sessionB) alert("merchant_id in sessionB");_x000D_
if ("merchant_id" in sessionCfromA) alert("merchant_id in sessionCfromA");
_x000D_
Type check also works :
if(typeof Obj.property == "undefined"){
// Assign value to the property here
Obj.property = someValue;
}
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);
})
}
here is an easy way to check whether object sent is contain undefined or null
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");
)
(I wanted to point this out even though I'm late to the party)
The original question you were trying to find a 'Not IN' essentially.
It looks like is not supported from the research (2 links below) that I was doing.
So if you wanted to do a 'Not In':
("merchant_id" in x)
true
("merchant_id_NotInObject" in x)
false
I'd recommend just setting that expression == to what you're looking for
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
There's several ways to do it, depending on your intent.
thisSession.hasOwnProperty('merchant_id');
will tell you if thisSession has that key itself (i.e. not something it inherits from elsewhere)
"merchant_id" in thisSession
will tell you if thisSession has the key at all, regardless of where it got it.
thisSession["merchant_id"]
will return false if the key does not exist, or if its value evaluates to false for any reason (e.g. if it's a literal false
or the integer 0 and so on).
you can do like this:
if("merchant_id" in thisSession){ /** will return true if exist */
console.log('Exist!');
}
or
if(thisSession["merchant_id"]){ /** will return its value if exist */
console.log('Exist!');
}
Try this,
if(thisSession.hasOwnProperty('merchant_id')){
}
the JS Object thisSession
should be like
{
amt: "10.00",
email: "[email protected]",
merchant_id: "sam",
mobileNo: "9874563210",
orderID: "123456",
passkey: "1234"
}
you can find the details here
You can try if(typeof object !== 'undefined')
This code causes esLint issue: no-prototype-builtins
foo.hasOwnProperty("bar")
The suggest way here is:
Object.prototype.hasOwnProperty.call(foo, "bar");
Source: Stackoverflow.com