我希望有人能够在这里提供帮助,或者为我指明正确的方向。
mm_newJson
)。obj = {};
,以存储/推送我每天需要的值(date
和fare
)。obj.date
与我的日历天匹配,并fare
在有值时插入该值。有几天,我的对象中没有值。因此,返回undefined
。
这是在这种情况下我的对象的屏幕截图:
问题:
对象所在的位置undefined
(因为没有 object.date 或 object.fare 键/值),我不希望将 object.fare 插入到我的日历中。
在这种情况下,“未定义”出现在我的日历中。
我通过用空字符串替换“undefined”来解决这个问题" "
。但基本上,我只是不希望 object.fare 被返回,如果它是未定义的。
我的代码在下面,我尝试在下面的函数中添加我的条件。例如:
if (typeof object === 'object')
, 或if (object == 'undefined')
, 或
然而,我不知道如何解决这个问题。
如果未定义,我只是不希望插入 object.value。由于 undefined 出现在匹配的日历日,当我不希望它出现时。
window.mm_newJson = [];
window.mm_dailyPrice = [];
window.mm_fullDate = new Date();
window.mm_startDate = String(mm_fullDate.getFullYear()) + '-' + String(mm_fullDate.getMonth()+1) + '-' + String(mm_fullDate.getDate());
// FETCH DATE AVAILABILITY
const response = await fetch('https://www.MYAPI.COM');
mm_newJson = await response.json();
// Loope through API to find each month
for (let i=0; i < mm_newJson.Months.length; i++) {
console.log(mm_newJson.Months[i].FlightDates);
// Find fares which are available in month
for (let j = 0; j < mm_newJson.Months[i].FlightDates.length; j++) {
let obj = {};
// Grab the specific dates
obj['date'] = String(mm_newJson.Months[i].YearNumber) + '-' + String(('0' + String(mm_newJson.Months[i].MonthNumber)).slice(-2)) + '-' + String(('0' + (mm_newJson.Months[i].FlightDates[j])).slice(-2));
obj['fare'] = "WW";
mm_dailyPrice.push(obj);
};
};
// Search mm_dailyPrice for date
function searchDate(input) {
let object = mm_dailyPrice.find(el => el.date === input);
console.log("object", object)
if (object != undefined) {
return object.fare;
} else {
// Returns undefined, if I do not handle else condition
return "n/a";
}
};
// Add AVAILABILITY
let days = document.querySelector('div[data-tab*="Date Calendar Outbound"]').querySelectorAll('.day');
let j = 0;
// For each day in the 12 month calendar, display the "fare" value
for (let i = 0; i < days.length; i++) {
let date = days[i].dataset.date;
if (days[i].firstElementChild){
let fare = searchDate(date);
// if (fare !== "undefined") {
console.log("fare", fare);
let priceSpan = document.createElement('span');
priceSpan.innerHTML = String(fare);
priceSpan.setAttribute('class', 'calendar-price-test');
days[j].appendChild(priceSpan);
j++;
// }
}
};
如果对象未定义,这是我的日历的外观(但在此屏幕截图中,我已将 undefined 替换为字符串,因此undefined
不会出现在相关日期。
但真的,我根本不希望这些天出现任何东西。所以我不希望 object.fare 被识别,如果它是未定义的。IE - 我不希望它出现在日历中。
如果有帮助,这也是初始获取后响应的屏幕截图。, 中的数字FlightDates
代表一个月中的天数,我只想在其中注入“WW”。
你可以设置一个if块,如果票价不是"n/a"
,你可以设置innerHTML。否则,您不会对innerHTML 做任何事情。
if (fare !== "n/a") {
priceSpan.innerHTML = String(fare);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句