如何知道对象是否为空,未定义或角度为null

时间:2019-06-10 20:40:58

标签: angular typescript object

我有一个.json,它具有以下格式:data [0 ... n],其中每个位置都有一个具有以下格式的对象:

{foto1, foto2, foto3 ... fotoN}

这是一张图片,供您了解json如何出现在我身上:

add a photo where you can see the json file

。有些带有价值,但有些却像这样:

photo1:    

就是说,它至少不表示它是否为空,就像这样的字符串:“”,然后当我尝试询问它是否为空时,它对我不起作用,这意味着它是空白?还可以检查它是否为undefined或为null,并且都不为空。

2 个答案:

答案 0 :(得分:0)

您应检查JS中逻辑运算符的定义:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators

逻辑非(!):

以下代码显示了!的示例。 (逻辑非)运算符。

n1 = !true               // !t returns false
n2 = !false              // !f returns true
n3 = !''                 // !f returns true
n4 = !'Cat'              // !t returns false

双重NOT(!!):

可以串联使用两个NOT运算符来显式强制将任何值转换为相应的布尔基元。转换基于值的“真实性”或“虚假性”(请参阅​​“真实性”和“虚假性”)。

可以通过布尔函数完成相同的转换。

n1 = !!true                   // !!truthy returns true
n2 = !!{}                     // !!truthy returns true: any object is truthy...
n3 = !!(new Boolean(false))   // ...even Boolean objects with a false .valueOf()!
n4 = !!false                  // !!falsy returns false
n5 = !!""                     // !!falsy returns false
n6 = !!Boolean(false)         // !!falsy returns false

具体针对您的情况:

!data[n].photo //will truthy for 'null, 'undefined' and an empty string

!!data[n].photo //will falsey for 'null, 'undefined' and an empty string

答案 1 :(得分:0)

您可以过滤掉没有值的属性

twitter-2019.06.09-1

在调用api的映射中使用它替换数据对象

const nonEmptyProps = obj => Object.keys(obj).reduce((result, prop) => {
  const value = obj[prop];
  if (value) {
    result[prop] = value;
  }
  return result;
}, {});

console.log(
  nonEmptyProps(
    {
      prop1: 'has value',
      prop2: null,
      prop3: 'another value',
      prop4: undefined,
      prop5: ''
    }
  )
);