в следующем Json я получаю разные продукты для отображения на экране. Обратите внимание, что «Medical250» имеет значения, а «больница», «жизнь» и «стоматология» — нет. Это происходит в зависимости от состояния, которое я отправляю в фид API (и возраста).
{
"success": "1",
"quotekey": "1e2532897f24a46b98799665e43052423",
"membership": [{
"planid": "1",
"membership": "Select Basic",
"fee": "10.95"
},
{
"planid": "2",
"membership": "Select Silver",
"fee": "19.95"
},
{
"planid": "3",
"membership": "Select Gold",
"fee": "29.95"
},
{
"planid": "4",
"membership": "Select Platinum",
"fee": "39.95"
},
{
"planid": "5",
"membership": "Select Diamond",
"fee": "49.95"
}
],
"dental": [],
"medical0": [],
"medical250": [{
"plannumber": "1",
"single": "9.49",
"couple": "18.97",
"singlewithdependents": "21.82",
"family": "26.56"
},
{
"plannumber": "2",
"single": "12.28",
"couple": "24.55",
"singlewithdependents": "28.23",
"family": "34.37"
},
{
"plannumber": "3",
"single": "14.07",
"couple": "28.14",
"singlewithdependents": "32.36",
"family": "39.40"
},
{
"plannumber": "4",
"single": "16.74",
"couple": "33.48",
"singlewithdependents": "38.50",
"family": "46.87"
}
],
"hospital": [],
"life": []
}
Я разбираю этот Json и получаю значения следующим образом:
this.MedicalQuote = this.APIresult[0].medical250[0].single;
и т.д... но когда я пытаюсь получить this.APIresult[0].dental[0].single; которого не существует, мой код дает сбой. Есть ли способ определить, содержит ли ключ, например «зубной» в этом случае, какое-либо значение или он просто пустой []? Все ключи имеют значение, называемое «одиночным», за исключением «членства», которое всегда будет содержать значения.
Сейчас я делаю try - catch (e) для каждого продукта, но это не похоже на чистое решение, я хотел бы сделать это правильно.
Спасибо.
Используйте оператор «if», чтобы проверить, существует ли свойство, например:
if (thisSession.hasOwnProperty('dental')){
//your code...
}
Вы можете добавить знак ?
после свойства, которое может быть пустым, и оно вернет значение undefined.
const result = this.APIresult[0].dental[0]?.single
Тогда переменная result
будет неопределенной и вы сможете работать с ней так, как вам нужно.
Привет Игорь. Я получаю «неопределенное», имеет ли зубное значение значения или нет.
Перед этой строчкой
this.APIresult[0].medical250[0].single
нужен чек на наличие медицинского250 или нетif (this.APIresult[0].medical250 && this.APIresult[0].medical250.length > 0)
.