![](/img/trans.png)
[英]How should I handle 'this' in javascript objects that contain other javascript objects?
[英]How to handle JavaScript objects (parsed JSON) that contain null?
我正在使用 JavaScript/jQuery 通过 ajax 调用以 json 形式获取数据。 然后将 json 解析为 JavaScript 对象。 让我们调用对象var
。
现在我想将对象中的一个值分配给一个变量:
let publicationDay = val["work-summary"][0]["publication-date"]["day"]["value"]
只要这个值存在,就可以工作。 但是,对于某些结果,该对象包含的不是["value"]
而是["day"]
null
(如下所示)
val["work-summary"][0]["publication-date"]["day"] // is null
在这种情况下, let publicationDay = val["work-summary"][0]["publication-date"]["day"]["value"]
将抛出以下错误:
Uncaught TypeError: val['work-summary'][0]['publication-date'].day is null
并且代码执行停止。 当然,我可以检查val["work-summary"][0]["publication-date"]["day"] === null
,但是处理这种情况的最优雅的方法是什么? 也许,未来甚至
val['work-summary'][0]['publication-date'] // is null
可能会发生,我的null
检查不起作用。
很大程度上取决于您的上下文,但这里有一些示例。
const publicationDate = val['work-summary'][0]['publication-date'];
// usage
console.log(publicationDate && publicationDate.day && publicationDate.day.value); // very basic
console.log(publicationDate?.day?.value); // optional chaining, better if supported by your environment (should be)
console.log(get(publicationDate, “day.value”)); // lodash get()
我建议尝试可选链接。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining
假设这些值中的任何一个都可以为空:
let publicationDay = val?.["work-summary"]?.[0]?.["publication-date"]?.["day"]?.["value"]
它将变量设置为day.value
或undefined
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.