我試圖從我的 api 獲取一些資料 json,但我遇到了這個問題:

撰寫 javascript 代碼以從我的 API 獲取 json 資料:
// Get Specs
$.getJSON('https://my_api' , function(specs) {
console.log(specs);
$.each(specs, function(index, vsp) {
console.log(vsp);
var in = vsp.specs[0].value;
var ch = vsp.specs[1].value;
var ra = vsp.specs[2].value;
var ca = vsp.specs[3].value;
var ba = vsp.specs[4].value;
JSON資料例如:1:
"specs": [
{
"value": "info1"
},
{
"value": "info2"
},
{
"value": "info3"
},
{
"value": "infp4"
},
{
"value": "info5"
}
]
JSON資料例如:2:
"specs": [
{
"value": "info1"
},
{
"value": "info2"
},
{
"value": "info3"
},
{
"value": "infp4"
}
]
對于第一個示例,一切正常,但對于第二個示例,我遇到了這個問題:
Cannot read properties of undefined (reading 'value')
var ba = vsp.specs[4].value; ==> value is undefined
如果未定義,我如何跳過這個 var?任何幫助將不勝感激。
uj5u.com熱心網友回復:
你可以插入一個?在屬性名稱和下一個屬性之間的句點之間。
var ba = vsp?.specs?.[4]?.value;
您也可以使用 Nullish 合并運算子:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator
uj5u.com熱心網友回復:
您可以使用可選的鏈接 ( ?.) 運算子。
根據MDN:
可選的鏈接運算子 (
?.) 使您能夠讀取位于連接物件鏈深處的屬性值,而無需檢查鏈中的每個參考是否有效。
要使用它,只需使用下面的代碼。
var ba = vsp.specs[4]?.value;
如果找不到該value屬性,這將不會引發錯誤,而是回傳undefined。
這應該有助于解決錯誤。但是,您仍應添加檢查變數是否為undefined. 你可以使用類似下面的東西。
ba = ba ?? "Fallback";
這將使用左側值 ( ba) ,除非它是null或undefined,在這種情況下將使用右側值 ( "Fallback")。
一個if陳述句可以做類似的事情。
if (typeof ba === "undefined" || ba === null) {
ba = "Fallback";
}
您不能使用的原因!是因為它會將任何虛假值評估為false. 這只會在它是undefined或時回退null。
uj5u.com熱心網友回復:
在 json2 中獲得 vsp.specs[4] 是不可能的,因為陣列中只有從 0 到 3 的位置,可能會要求陣列中的位置存在類似
var ba = (4<vsp.length) ? vsp.specs[4].value:null;
或 var ba = vsp?.specs?.[4]?.value;
uj5u.com熱心網友回復:
在訪問之前檢查陣列的長度呢?據我了解,聽起來您嘗試訪問索引 4 處的專案,該專案從一開始就不存在
從您的第二個示例中檢查陣列長度的示例代碼
var json = {
"specs": [
{
"value": "info1"
},
{
"value": "info2"
},
{
"value": "info3"
},
{
"value": "infp4"
}
]};
console.log(Object.keys(json['specs']).length); // 4
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/466173.html
標籤:javascript json
下一篇:達到某個值時如何發出警報
