Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.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_Javascript Objects - Fatal编程技术网

Javascript 这需要两件事才能成为事实

Javascript 这需要两件事才能成为事实,javascript,javascript-objects,Javascript,Javascript Objects,我搞不懂什么。我需要使用三元运算符来返回值或false,但它从包含其他嵌套对象的对象中获取所需的数据,我无法确定这些嵌套对象是否存在 数据结构如下: data = { "foo":{ "bar": true, "tar": true, "rar": false }, "goo":{ "har": true, "par": true, "mar": false }, }

我搞不懂什么。我需要使用三元运算符来返回值或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,如果存在则返回实际值


我不相信这是一个重复的一个,它被标记为一个重复的,因为我特别需要它是一个三元运算符。Ifs不适合我的用途。

您可以使用中的

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

这样的结构很容易出错,这一点从问题本身就可以明显看出。

您的代码在语法上是无效的。你不能用数字作为财产名称;您必须使用
[]
操作符,而不是
。是的,我知道这一点,我只是在使用虚拟数据。我会改正的。谢谢此外,三元运算符虽然有效,但会导致代码难以读取,特别是当读取条件复杂时,也就是说,三元运算符只是一个if语句,所以只需检查它是否
未定义。首先,你可以扩展你的三元组来检查对象是否存在,但是为了清晰起见,你可能应该使用if语句。嘿,谢谢你,是的,这很有效。不幸的是,我不得不使用三元(我使用它作为一个选项,根据计算属性在Vue.js中选择一个CSS类,如果这对您有任何意义的话,并且据我所知,实现这一点的唯一方法是使用三元。)结果这使我的代码非常慢:/啊,谢谢您的回答!