Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中,如何检查嵌套在另一个键/值对中的特定键/值对的存在性?_Javascript_Key Value - Fatal编程技术网

在Javascript中,如何检查嵌套在另一个键/值对中的特定键/值对的存在性?

在Javascript中,如何检查嵌套在另一个键/值对中的特定键/值对的存在性?,javascript,key-value,Javascript,Key Value,例如,这是我正在处理的对象的值: object = {"message":"success","dataList":{"state":"error","count":"25"}} 我知道要检查键“message”是否存在,我可以执行以下操作: if(object['message']){ //"message" exists. do stuff. } else{ //"message" does not exist } 如何检查“状态”或“计数”的存在 或者(在我看来)更具可

例如,这是我正在处理的对象的值:

object = {"message":"success","dataList":{"state":"error","count":"25"}}
我知道要检查键“message”是否存在,我可以执行以下操作:

if(object['message']){
    //"message" exists. do stuff.
} else{
    //"message" does not exist
}
如何检查“状态”或“计数”的存在

或者(在我看来)更具可读性:

if(object.dataList.state){ ... }
编辑:检查所有父对象也是一个好主意,这样当对象上不存在数据列表时,就不会出现意外错误:

if (object && object.dataList && object.dataList.state)
试着这样做:

object = {"message":"success","dataList":{"state":"error","count":"25"}};

    if(object.message =='success'){
        console.log(object.dataList);// your datalist object here use it
        console.log(object.dataList.state);
         console.log(object.dataList.count);
    } else{
        //"message" does not exist
    }
如果您试图检查状态,请执行以下操作:

if(typeof(object.dataList.state) !='undefined' && object.dataList.state.length > 0){
    // dataList.state exists. do stuff.
} else {
    // dataList.state does not exist
}

首先,如果要检查属性是否存在,应该使用
if('message'在对象中)
。如果使用
If(object['message'])
,对于
object={'message':null}
,结果是错误的

在您的问题中,对象嵌套在两个层中。如果有两个以上,可以尝试使用递归的通用解决方案:

function findProperty (obj, key) {
    if (typeof obj === "object") {
        if (key in obj) return true;
        var childReturned = false;
        for (k in obj) {
            childReturned = findProperty(obj[k], key);
            if (childReturned) return true;
        }
    } 
    return false;
}

var obj = {"message":"success","dataList":{"state":"error","count":"25"}};
findProperty(obj, 'message');   // => true
findProperty(obj, 'dataList');  // => true
findProperty(obj, 'state');     // => true
findProperty(obj, 'count');     // => true

最近落选的人怎么了?这是一个完全正确的问题。
function findProperty (obj, key) {
    if (typeof obj === "object") {
        if (key in obj) return true;
        var childReturned = false;
        for (k in obj) {
            childReturned = findProperty(obj[k], key);
            if (childReturned) return true;
        }
    } 
    return false;
}

var obj = {"message":"success","dataList":{"state":"error","count":"25"}};
findProperty(obj, 'message');   // => true
findProperty(obj, 'dataList');  // => true
findProperty(obj, 'state');     // => true
findProperty(obj, 'count');     // => true
if (object.dataList.state || object.dataList.count) {
    // ...
}