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似乎可以做到这一点。谢谢