Typescript / JavaScript 比较未定义的值

奥斯卡

通过 http 方法我下载 dto 和一些变量,其中一些可能是未定义的。

示例 Http 响应(它可能包含更多变量,如 SO2、C6H6 等...):

{
  'city_name': 'warszawa',
  'pollution_types': {
    'CO': 506.0,
    'O3': 52.66
  }
}

托斯:

export interface PollutionTypes {
  CO: number;
  NO2: number;
  SO2: number;
  PM10: number;
  PM25: number;
  C6H6: number;
  O3: number;
}

export interface AirQualityData {
  city_name: string;
  pollution_types: PollutionTypes;
}

此刻我试图以这种方式进行比较,但它不起作用。

tmp = pollutionTypes.map(value => value.CO);
if (tmp != undefined || tmp != null) {
  //do something
}

当我试图在控制台上显示这个对象时,我得到了类似的东西:

[undefined]
0: undefined
length: 1

但这不等于未定义:/

你知道如何解决这个问题吗?感谢您的回答。

尼尔斯·凯勒

您在控制台中得到了正确的东西,它表明您得到了一个数组。内容恰好是undefined.

const arrayWithUndefined = [undefined];
console.log(arrayWithUndefined);

您可以过滤数组并删除未定义的值。然后查看您的数组中是否有值。

const types = {
  "city_name": "warszawa",
    "pollution_types": {
        "O3": 52.66
    }
}; // NO CO present in this data to simulate undefined.
const pollutionTypes = [types.pollution_types];

tmp = pollutionTypes.map(value => value.CO);

console.log('Before filter:', tmp);

tmp = tmp.filter(function( element ) {
   return element !== undefined;
});

console.log('After filter:', tmp);

if (tmp.length) { // Check if tmp has values in it.
  console.log('tmp has elements in it');
  //do something
} else {
  console.log('tmp is empty');
}

这将返回,tmp is empty因为数组中没有 CO 值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章