如何使用double bang运算符检查对象的值是否为Truthy或false?

问题描述

我正在尝试检查对象是否具有真实或错误的值。例如,如果一个对象具有所有真实值,那么我想做点什么。如果对象值不真实,即错误地例如0,''和未定义,我想做其他事情。但是,它不能像它总是执行if语句的第一部分那样工作。我有什么事做错了吗?

 class Truthy {
  a: string;
  b: number;
  c: object;

  constructor() {
    this.a = 'a';
    this.b = 1;
    this.c = {};
  }
}

 class Falsely {
  a: string;
  b: number;
  c: object;

  constructor() {
    this.a = '';
    this.b = 0;
    this.c = undefined;
  }
}

  const truthy = new Truthy()
  const falsely = new Falsely()

  if (!!truthy) {
    // do something 
  } else {
    // do something else 
  }

  if (!!falsely) {
    // do something 
  } else {
    // do something else 
  }

解决方法

您需要创建一个函数来测试每个属性是否为真,然后一次合并一个结果。

  1. 将对象作为参数传递(如果是类方法,则引用“ this”)
  2. 获取所有密钥
  3. 初始化布尔值
  4. 循环测试每个人
  5. 返回结果

这是一个布尔函数,因此您可以将其放入所需的if()

<label>ab</label>