离子-在打字稿中检查“”

时间:2019-11-04 09:29:12

标签: javascript typescript ionic-framework

我对Ionic和Typescript还是很陌生,并且收到了一个应用程序的缺陷,其中出现了订单外壳,但是数据全为空白。 我的代码:

// Loop over MONITORS
this.monitorArrayLength = this.detail.orderDetailList[i].monitors.length;
for (let j = 0; j < this.monitorArrayLength; j++) {
  this.monitorArray[j] = this.detail.orderDetailList[i].monitors[j];

  if (
    this.monitorArray[j].serialNum !== null ||
    this.monitorArray[j].serialNum !== "" ||
    this.monitorArray[j].status !== null ||
    this.monitorArray[j].status !== "" ||
    this.monitorArray[j].brandModel !== null ||
    this.monitorArray[j].brandModel !== "" ||
    this.monitorArray[j].docId !== null ||
    this.monitorArray[j].docId !== ""
  ) {
    this.showMonitorArray[j] = true; // Show monitor

    if (this.monitorArray[j].docId !== null) {
      this.pdfIconArray[j] = true; // Show pdf icon
    } else {
      this.pdfIconArray[j] = false; // Show normal icon
    }
  } else {
    this.showMonitorArray[j] = false; // Don't show monitor
  }
}

因此,如果从数据库返回的结果为null或“”,则基本上什么也不会出现。

这是我从数据库中得到的结果:

monitors: [{ serialNum: "", status: "", brandModel: "", docId: null }]

我上面的代码没有正确检查“”,并且当不应该显示数据的外壳时仍在显示。

这是检查“”的正确语法吗?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

这与Ionic或TypeScript无关。您应该将您的if条件更改为

  

serialNum被定义,状态被定义,brandModel被定义,docId被定义

其中“已定义”表示不是null""

if (
  (this.monitorArray[j].serialNum !== null &&
    this.monitorArray[j].serialNum !== "") &&
  (this.monitorArray[j].status !== null &&
    this.monitorArray[j].status !== "") &&
  (this.monitorArray[j].brandModel !== null &&
    this.monitorArray[j].brandModel !== "") &&
  (this.monitorArray[j].docId !== null && this.monitorArray[j].docId !== "")
) {
  //...
}

但是看起来真的很乱。您可以将其缩短为功能

function isDefined(monitor) {
  const { serialNum, status, brandModel, docId } = monitor;
  return serialNum && status && brandModel && docId;
}

确保所有这些值都不是falsy