![](/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.