如果未定义,不返回对象?

瑞娜·维尔玛

我希望有人能够在这里提供帮助,或者为我指明正确的方向。

  1. 我正在使用外部 API 来找出哪些航班可用,哪些天可用。(回应是mm_newJson)。
  2. 然后我创建一个新对象obj = {};,以存储/推送我每天需要的值(datefare)。
  3. 然后,我将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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章