amt: "10.00"
email: "sam@gmail.com"
merchant_id: "sam"
mobileNo: "9874563210"
orderID: "123456"
passkey: "1234"
以上是我正在处理的JSON对象。我想检查'merchant_id'键是否存在。我尝试了下面的代码,但它不起作用。有什么方法可以实现吗?
<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>
答案 0 :(得分:494)
试试这个,
if(thisSession.hasOwnProperty('merchant_id')){
}
JS对象thisSession
应该像
{
amt: "10.00",
email: "sam@gmail.com",
merchant_id: "sam",
mobileNo: "9874563210",
orderID: "123456",
passkey: "1234"
}
您可以找到详细信息here
答案 1 :(得分:62)
根据您的意图,有几种方法可以做到这一点。
thisSession.hasOwnProperty('merchant_id');
会告诉你thisSession本身是否有该密钥(即不是从其他地方继承的东西)
"merchant_id" in thisSession
会告诉你thisSession是否拥有密钥,无论它在何处获得密钥。
thisSession["merchant_id"]
将返回false,或者由于任何原因(例如,如果它是文字false
或整数0等等),
{{1}}将返回false。
答案 2 :(得分:13)
所以如果你想做'不在':
("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
答案 3 :(得分:10)
类型检查也有效:
bool
答案 4 :(得分:6)
此代码导致esLint问题:no-prototype-builtins
foo.hasOwnProperty("bar")
here的建议方式是:
Object.prototype.hasOwnProperty.call(foo, "bar");
答案 5 :(得分:1)
您可以这样做:
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!');
}
答案 6 :(得分: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);
})
}
这里有一种简单的方法来检查发送的对象是否包含undefined或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");
)
答案 7 :(得分:0)
我稍稍更改了if语句就可以使用(也适用于继承的obj)
if(!("merchant_id" in thisSession)) alert("yeah");
window.onload = function getApp() {
var sessionA = {
amt: "10.00",
email: "sam@gmail.com",
merchant_id: "sam",
mobileNo: "9874563210",
orderID: "123456",
passkey: "1234",
}
var sessionB = {
amt: "10.00",
email: "sam@gmail.com",
mobileNo: "9874563210",
orderID: "123456",
passkey: "1234",
}
var sessionCfromA = Object.create(sessionA); // inheritance
sessionCfromA.name = 'john';
if(!("merchant_id" in sessionA)) alert("merchant_id not in sessionA");
if(!("merchant_id" in sessionB)) alert("merchant_id not in sessionB");
if(!("merchant_id" in sessionCfromA)) alert("merchant_id not in sessionCfromA");
if("merchant_id" in sessionA) alert("merchant_id in sessionA");
if("merchant_id" in sessionB) alert("merchant_id in sessionB");
if("merchant_id" in sessionCfromA) alert("merchant_id in sessionCfromA");
}
答案 8 :(得分:-13)
您可以尝试if(typeof object !== 'undefined')