【问题标题】:Better way to test for existence of a nested property in an object [duplicate]测试对象中是否存在嵌套属性的更好方法[重复]
【发布时间】:2014-06-22 05:42:23
【问题描述】:

我正在使用具有我需要测试的嵌套属性的 javascript 对象,例如

myObject = {
    'some' : {
        'nested' : {
            'property' : {
                'foo' : 'bar'
            }
        }
    }
    ...
}

问题是myObject.some可能不存在,myObject.some.nested也可能不存在,等等。所以要测试myObject.some.nested.property.foo 的存在,我必须这样做:

if (myObject.some) {
    if (myObject.some.nested) {
        if (myObject.some.nested.property) {
            if (myObject.some.nested.property.foo) {
                // do something with myObject.some.nested.property.foo here
            }
        }
    }
}

因为如果我执行if (myObject.some.nested.property.foo) 并且其中一个父属性不存在,则会引发错误:

TypeError: 'undefined' is not an object (evaluating 'myObject.some.nested.property.foo')

有没有更好的方法来测试嵌套属性而不使用这么多 if 语句?

【问题讨论】:

标签: javascript


【解决方案1】:

安全地导航到它。 foo 将评估为 false 以防万一你没有一路走好。

var foo = myObject.some && myObject.some.nested && myObject.some.nested.property;
if(foo)
    //use foo

http://jsfiddle.net/Y7LFp/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    相关资源
    最近更新 更多