我正在使用 JavaScript/jQuery 通過 ajax 呼叫以 json 形式獲取資料。然后將 json 決議為 JavaScript 物件。讓我們呼叫 object var。
現在我想將物件中的一個值分配給一個變數:
let publicationDay = val["work-summary"][0]["publication-date"]["day"]["value"]
只要這個值存在,就可以作業。但是,對于某些結果,物件包含nullnot for ["value"]but for ["day"](如下圖)
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不起作用。
uj5u.com熱心網友回復:
很大程度上取決于您的背景關系,但這里有一些示例。
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()
uj5u.com熱心網友回復:
我建議嘗試可選鏈接。 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/355557.html
標籤:javascript
