我有这样的json

var a = {
    "name": "test1",
    "redisData": {
        "redisIp": "127.0.0.1",
        "dbSetting": {
            "dbIp": "127.0.0.1",
            "dbUserName": "root",
            "dbUserPassword": "root",
        },
        "otherData":{
            "email":"[email protected]"
        }
    }
}


所以当所有数据都存在于所有密钥中时,我必须将这些数据推送到数据库中
为此,我必须验证这样的数据

if (a.hasOwnProperty("redisData")) {
    if (a.redisData.hasOwnProperty("dbSetting")) {
        if (a.redisData.dbSetting.hasOwnProperty("dbIp")) {
            if (a.redisData.dbSetting.dbIp) {
                // now insert in to database
            } else {
                alert('DB server Ip missing');
            }
        } else {
            alert('DB server Ip missing');
        }
    } else {
        alert('DB server Ip missing');
    }
} else {
    alert('DB server Ip missing');
}


但是这段代码很难看。我们是否有更好的方法来避免hasownproperty的多重条件和链接。

最佳答案

简单:只需检查值是否存在并具有真实值:

if (a.redisData && a.redisData.dbSetting && a.redisData.dbSetting.dbIp) {
    // now insert in to database
} else {
    alert('DB server Ip missing');
}


在这里使用hasOwnProperty没有真正的优势。

关于javascript - 如何检查对象中的hasOwnProperty链,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51841235/

10-11 05:55