Javascript 这需要两件事才能成为事实
我搞不懂什么。我需要使用三元运算符来返回值或false,但它从包含其他嵌套对象的对象中获取所需的数据,我无法确定这些嵌套对象是否存在 数据结构如下:Javascript 这需要两件事才能成为事实,javascript,javascript-objects,Javascript,Javascript Objects,我搞不懂什么。我需要使用三元运算符来返回值或false,但它从包含其他嵌套对象的对象中获取所需的数据,我无法确定这些嵌套对象是否存在 数据结构如下: data = { "foo":{ "bar": true, "tar": true, "rar": false }, "goo":{ "har": true, "par": true, "mar": 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类,如果这对您有任何意义的话,并且据我所知,实现这一点的唯一方法是使用三元。)结果这使我的代码非常慢:/啊,谢谢您的回答!