Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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_Arrays_Ternary Operator - Fatal编程技术网

Javascript 在三元数组中访问数组中对象的属性

Javascript 在三元数组中访问数组中对象的属性,javascript,arrays,ternary-operator,Javascript,Arrays,Ternary Operator,我有一个有趣的情况,不知道是否有人知道为什么。 我的代码中有这个语句 var score = (typeof k.rewards !== 'undefined') ? k.rewards[0].value : k.value; 这将在数组中抛出一个未定义值的错误(在三元数组的truthy端)。但是,我知道值在那里,这将很好地打印出来 var score = (typeof k.rewards !== 'undefined') ? k.rewards : k.value; Console.log

我有一个有趣的情况,不知道是否有人知道为什么。 我的代码中有这个语句

var score = (typeof k.rewards !== 'undefined') ? k.rewards[0].value : k.value;
这将在数组中抛出一个未定义值的错误(在三元数组的truthy端)。但是,我知道值在那里,这将很好地打印出来

var score = (typeof k.rewards !== 'undefined') ? k.rewards : k.value;
Console.log(score[0].value);

有人知道为什么当我试图直接在三元数据库中访问它时,它是未定义的吗

你的第一个表达式相当于

(typeof k.rewards !== 'undefined' ? k.rewards[0] : k).value
而你的第二个相当于

(typeof k.rewards !== 'undefined' ? k.rewards : k.value)[0].value
我希望你现在能看到不同

这将在数组中抛出一个未定义值的错误(在三元数组的truthy端)

不完全是。当
k.rewards[0]
未定义时,您的第一个确实会抛出,但您仍尝试访问其
.value
属性。如果
k.rewards[0]
存在,但没有
.value
属性,它不会抛出,只会产生
未定义的
。您可能需要在您的条件下测试
k.rewards.length>0

(k.rewards && k.rewards.length ? k.rewards[0] : k).value

您可以添加生成数组的代码吗?您可以显示奖励类型和结构吗?不应该是这样,请使用以下表达式:
var score=k.rewards&&k.rewards.length?k、 奖励[0]。价值:k.价值确定,但它们都有值。上述声明应该有效。我正在获取远程数据,结构可以是k.rewards[0].value或k.value。奖赏的长度可能是问题所在