Javascript - 如何找出触发了哪些条件?

时间:2017-03-30 13:52:04

标签: javascript

假设我有以下声明:

getHeroes(): Promise<Hero[]> {
   return this.http.get(this.heroesUrl)
               .toPromise()
               .then(response => response.json() as Hero[])
               .catch(this.handleError);
}

有没有办法告诉哪个条件符合要求才能使该陈述成立?

比下面更优雅的东西,这显然是多余的:

if (height > 4.25 || length > 6 || weight > 1) {
  //Do Something
}

4 个答案:

答案 0 :(得分:0)

不可能!

您必须在单独的条件下检查每个选项:

if (height > 4.25 || length > 6 || weight > 1) {

 if(height > 4.25){
  return true;
 }

 if(length > 6){
  return true;
 }

 if (weight > 1){
  return true;
 };

}

即便如此,你也不会知道当高度大于4.25时长度是否大于6时,要了解这些,你必须检查所有可能的组合:

 if (height > 4.25 || length > 6 || weight > 1) {

     if(height > 4.25 && length > 6 &&  weight > 1){
      return true;
     }

     if(height > 4.25 && length > 6){
      return true;
     }

       //and so on...

    }

答案 1 :(得分:-1)

我想我会做这样的事情:

let height = 2;
let length = 2;
let weight = 2;

var conditions = [
{name: "con1",con: (height > 4.25)},
{name: "con2",con: (length > 6)},
{name: "con3",con: (weight > 1)}
]

conditions.forEach(function(value, key){
if(value.con)
{
console.log(value.name+" was triggered")
}
})

答案 2 :(得分:-1)

您可以滥用开关构造:

var height = 4;
var length = 7;
var weight= 1;
switch(true) {
case (height > 4.25):
  alert(1);
  break;
 case (length > 6):
   alert(2);
  break;
case (weight > 1):
  alert(3);
  break;
default:
  alert(4);
}

答案 3 :(得分:-1)

您始终可以将条件检查分配给变量。 像这样的东西:

function dimension(height, length, weight) {
    var param = {};
    if ((param.height = height > 4.25) || (param.length = length > 6) || (param.weight = weight > 1)) {
        console.log(param);
        //if (param.height) dosomething_with_height(height);
        //if (param.length) dosomething_with_length(length);
        //if (param.weight) dosomething_with_weight(weight);
    }
}

但是你知道,因为它的if或条件,当某些条件满足时,则不检查下一个条件。

因此,如果满足高度条件,则长度和重量不确定。 或者如果长度条件满足,则高度为假,但重量不确定。

here some test