Как предусмотреть значение undefined в свойстве объекта внутри массива? (JS)
Всем привет! Есть массив из объектов, внутри объектов свойства с заданными значениями. Если есть значение - выводим шаблонную строку вида Ваш счет ${newArr[0].DepInfo.AcctNum.slice(-4)} был открыт ${newArr[0].DepInfo.StartDt}
. НО! Нужно предусмотреть, если не будет StartDt. Тогда нужно вывести пустую строку "", но у меня где-то ошибка и получаю "Ваш счет 5413 был открыт ".
Проверяю StartDt следующим образом:
newArr[0].DepInfo.StartDt !== undefined || newArr[0].DepInfo.StartDt !== null || newArr[0].DepInfo.StartDt !== ""
let testArr = [
{
"StatusDesc": "Открытый вклад",
"AccType": "Карта",
"AcctCur": "RUR",
"AcctName": "Платёжный счёт (руб.)",
"itemInfo":
{
"StartDt": "",
"itemNum": "775656566665413"
}
},
{
"StatusDesc": "Вклад закрыт",
"AccType": "Счет",
"AcctCur": "RUR",
"AcctName": "Накопительный счёт",
"DepInfo": {
"StartDt": "2022-09-07",
"AcctNum": "775656566665413",
}
},
];
// Отбираем для работы только открытые счета в массив newArr
let newArr = [];
// Создаем результирующий массив result
let result = [];
// Куда будем складывать искомые значения (строку и код выполнения функции) в переменные elem1 и elem2
let elem1;
let elem2;
function opnAcctRes() {
for(let i = 0; i < testArr.length; i++) {
if(testArr[i].StatusDesc === "Открытый вклад") {
newArr.push(testArr[i]);
}
}
if(newArr.length > 1 || newArr.length === 0) {
elem1 = "";
elem2 = -1;
result.push(elem1, elem2);
} else {
if(newArr[0].hasOwnProperty("DepInfo")) {
if(/^\d+$/.test(newArr[0].DepInfo.AcctNum) && (newArr[0].DepInfo.StartDt !== undefined || newArr[0].DepInfo.StartDt !== null || newArr[0].DepInfo.StartDt !== "")) {
elem1 = `Ваш счет ${newArr[0].DepInfo.AcctNum.slice(-4)} был открыт ${newArr[0].DepInfo.StartDt}`;
elem2 = 0;
result.push(elem1, elem2);
} else {
elem1 = "";
elem2 = -1;
result.push(elem1, elem2);
}
} else if(newArr[0].hasOwnProperty("itemInfo")) {
if(/^\d+$/.test(newArr[0].itemInfo.itemNum) && (newArr[0].itemInfo.StartDt !== undefined || newArr[0].itemInfo.StartDt !== null || newArr[0].itemInfo.StartDt !== "")) {
elem1 = `Ваш счет ${newArr[0].itemInfo.itemNum.slice(-4)} был открыт ${newArr[0].itemInfo.StartDt}`;
elem2 = 0;
result.push(elem1, elem2);
} else {
elem1 = "";
elem2 = -1;
result.push(elem1, elem2);
}
}
}
}
opnAcctRes();
Источник: Stack Overflow на русском