假设我有以下声明:
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
}
答案 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或条件,当某些条件满足时,则不检查下一个条件。
因此,如果满足高度条件,则长度和重量不确定。 或者如果长度条件满足,则高度为假,但重量不确定。