0

私はこのようなjsonを持っています

var a = {
    "name": "test1",
    "redisData": {
        "redisIp": "127.0.0.1",
        "dbSetting": {
            "dbIp": "127.0.0.1",
            "dbUserName": "root",
            "dbUserPassword": "root",
        },
        "otherData":{
            "email":"a@gmail.com"
        }
    }
}

したがって、その目的のためにすべてのキーに存在するすべてのデータがこのようなデータを検証する必要がある場合、このデータをデータベースにプッシュする必要があります

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');
}

しかし、このコードは醜く見えます。複数の if 条件と の連鎖を避けるためのより良い方法はありますかhasownproperty

4

6 に答える 6

0

その問題にはlodash_.get()メソッドを使用できます

var ip = _.get(a.redisData, 'dbSetting.dbIp');

if (ip) {
   //insert into database
} else {
   // not found IP
}
于 2018-08-14T12:50:20.383 に答える