【问题标题】:how to know if an object is empty, undefined or null in angular如何知道一个对象是否为空,未定义或角度为空
【发布时间】:2019-06-10 20:40:58
【问题描述】:

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

{foto1, foto2, foto3 ... fotoN}

这是一张图,让你看看json是怎么来的:

add a photo where you can see the json file

。有些带有一个值,但有些是这样的:

photo1:    

也就是说,它至少不表示它是否像这样的字符串为空:“”,那么当我尝试询问它是否为空时,它对我不起作用,它是什么意思空白的?还探测它是否未定义或为空,也不是。

【问题讨论】:

  • 你能用例子解释更多吗?
  • 我不相信只有这样的空白是有效的 JSON
  • 真的很重要吗?所有的案例都是假的。你能解释一下为什么它是空的、空的或未定义的吗?
  • Por que no todos vienen así, unos si vienen con uma cadena por ejemplo: foto1: imagenurl, y otros vienen así en blanco: foto1: .
  • 因为不是所有的都这样,有些如果他们带有一个字符串例如:foto1:urlImage,而其他的也是白色的:foto1:

标签: angular typescript object


【解决方案1】:

你应该检查 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 运算符来显式强制将任何值转换为相应的布尔原语。转换基于值的“真实性”或“虚假性”(请参阅​​真实性和虚假性)。

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

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

【讨论】:

    【解决方案2】:

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

    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: ''
        }
      )
    );

    在调用 api 的地图中使用它来替换数据对象

    http.get('api url').map(form => ({ ...form, data: nonEmptyProps(form.data) }));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-14
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多