识别未定义的对象名称/值对

这个问题在这里已经有了答案:

  • 检测未定义的对象属性40个答案

  • 您应该使用typeof来检查未定义的密钥。

       function parseMe(data){
    
            renderR="";
    
            if(data[0].item4!="collapse"){
    
                renderR=data[0].item4; 
                //if name/value pair isn't equal to "collapse" render it.
    
            }else if(typeof data[0].item4==="undefined"){ 
    
                document.getElementById('div1').style.display='none'; 
                //if name/value pair is undefined in object hide the div.
    
            } 
    }
    

    正如在上面的注释中指出的那样, else if条件可以改变为typeof(...) === 'undefined'以使该方法有效,那么else if 。 然而,更标准的解决方案是使用hasOwnProperty方法查询对象的键值,例如

    } else if (data[0].hasOwnProperty('item4')) {

    在尝试通过点符号或方括号访问该属性之前,应首先检查该检查。 此外,这不会遍历原型链以确定继承属性,但它会检测直接属于该对象的任何属性,这对于原始对象值和解析逻辑(如此)应该足够了。 因此,包含重构代码的最终解决方案可以使用hasOwnProperty方法,也可以使用in运算符和switch语句,例如

    for (var key in data[0]) {
        var value = data[0][key];
        switch (key) {
            case "item1":
                dosomething(value);
                break;
            case "item2":
                dosomethingelse(value);
                break;
            // etc...
        }
    }
    
    链接地址: http://www.djcxy.com/p/22645.html

    上一篇: recognizing undefined object name/value pairs

    下一篇: How can I check the variable whether it exists or not