Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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 - Fatal编程技术网

Javascript 深度嵌套对象中未定义变量的默认值

Javascript 深度嵌套对象中未定义变量的默认值,javascript,Javascript,我只找到了未定义的变量的解决方案,而不是我目前拥有的用例 我正在从另一个对象构建一个对象,在这个对象中,我从输入对象分配了一些值,例如 valueQuantity: { value: observation['obx.5'][0]['obx.5.1'][0], unit: observation['obx.6'][0]['obx.6.1'][0] }, 在某些输入对象中,值是在某些输入对象中定义的,而它们不是。在这种情况下,我希望value和unit为null,但这显然

我只找到了未定义的变量的解决方案,而不是我目前拥有的用例

我正在从另一个对象构建一个对象,在这个对象中,我从输入对象分配了一些值,例如

valueQuantity: {
      value: observation['obx.5'][0]['obx.5.1'][0],
      unit: observation['obx.6'][0]['obx.6.1'][0]
},
在某些输入对象中,值是在某些输入对象中定义的,而它们不是。在这种情况下,我希望value和unit为null,但这显然会出错

(节点:36779)未处理的PromisejectionWarning:TypeError:无法读取 未定义的属性“0”

在本例中,观察值['obx.5'][0]尚未定义

我可以尝试/捕获,但由于生成的对象相当长,因此将变得非常不可读


有什么方法可以优雅地执行此操作?

您可以使用lodash的get函数从对象检索嵌套属性

从文档中:

var object = { 'a': [{ 'b': { 'c': 3 } }] };

_.get(object, 'a[0].b.c');
// => 3

_.get(object, ['a', '0', 'b', 'c']);
// => 3

_.get(object, 'a.b.c', 'default');
// => 'default'

这回答了你的问题吗?听起来像是您想要的,这是JS的一个非常新的补充(因此浏览器支持非常有限)。您可以找到更兼容浏览器的版本。是的,可选链接听起来很完美!我找了这个,谢谢。我可以用Javascripts对象解构来实现这一点吗?我不确定,因为我必须遍历对象和数组…不,您可以使用对象分解将顶级属性指定给变量…在这种情况下,因为您希望检索嵌套属性,这将无助于选择链接听起来像是完美的答案,但到目前为止,lodash似乎可以做到这一点。谢谢