三元需要两件事才是真的

时间:2017-08-02 22:31:49

标签: javascript javascript-objects

我在搞清楚方面遇到了一些麻烦。我需要使用三元运算符返回值或false,但它从包含其他嵌套对象的对象获取所需的数据,我不能确定这些嵌套对象是否存在。

数据结构如下:

data = {
    "foo":{
        "bar": true,
        "tar": true,
        "rar": false
    },
    "goo":{
        "har": true,
        "par": true,
        "mar": false
    },
}

三元运算符基本上需要执行以下操作:

var something = data.foo.bar ? data.foo.bar : false

但有可能data.foo不存在,而且data.foo.bar也不存在。

我如何检查任何一个元素不存在,如果不存在则返回false,如果不存在则返回实际值?

我不相信这是它被标记为副本的副本,因为我特别需要它作为三元运算符。如果不适合我的目的。

1 个答案:

答案 0 :(得分:1)

您可以使用in运算符:

var x = (1234 in data && data[1234] && 5678 in data[1234]) ?
    data[1234][5678] :
    false;

这样的结构容易出错,这可能从问题的存在中显而易见。