我使用TONS of if语句来完成一项任务......但是......
if (parent.getObject()=='apple') {
if (datatype('fruit')){
//do a
parent.setObjectType('fruit');
}
else if (datatype('beverage')){
//do a
parent.setObjectType('beverage');
}
}
else if (parent.getObject()=='banana') {
if (datatype('fruit')){
//do a
parent.setObjectType('fruit');
}
else if (datatype('beverage')){
//do a
parent.setObjectType('beverage');
}
}
else if (parent.getObject()=='coconut') {
if (datatype('fruit')){
//do a
parent.setObjectType('fruit');
}
else if (datatype('beverage')){
//do a
parent.setObjectType('beverage');
}
}
else if (parent.getObject()=='Dewberry') {
if (datatype('fruit')){
//do a
parent.setObjectType('fruit');
}
else if (datatype('beverage')){
//do a
parent.setObjectType('beverage');
}
}
我是否可以尽量减少重复代码的使用? 我不想只使用if else语句行来消耗所有空格......
答案 0 :(得分:1)
我不确定您的实际代码是否更加多样化,但您发布的内容可以通过
完全复制if (['apple', 'banana', 'coconut', 'Dewberry'].some(function(fruit) {
return parent.getObject()==fruit;
}) {
var type = ['fruit', 'beverage'].find(datatype);
if (type) {
//do a
parent.setObjectType(type);
}
}
(find
函数类似于以下内容
Array.prototype.find = function(predicate, context) {
for (var i=0; i<this.length; i++)
if (predicate.call(context, this[i], i))
return this[i];
return null;
};
答案 1 :(得分:0)
如果没有看到更多代码,您可以使用以下内容:
function doTask(a, b) {
var as_string = a + ";" + b;
switch (as_string) {
case "1;1":
//code when a=1 and b=1
break;
case "1;2":
//code when a=1 and b=2
break;
}
}
var a = 1;
var b = 1;
doTask(a, b);
答案 2 :(得分:0)
您可以简单地使用The switch Statement,在您有许多可能值的情况下效率更高:
switch (parent.getObject()) {
case "apple":
switch (datatype) {
case "fruit":
//Task //do task a
//do task b with value 1
break;
case "beverage":
//do task a
//do task b with value 2
break;
}
break;
case "banana":
// Task a with ...
break;
// And put all your possible values
}
您只需要管理parent.getObject()
和datatype
的可能值。
答案 3 :(得分:0)
根据您的代码,您可能会或可能无法减少if语句。
例如,如果要添加从0到n的奇数,则从0到n循环,并使用if语句检查数字是否为奇数。但是,如果你碰巧知道高斯的规则1/2 * n *(n + 1),你可以在一行中计算这个值而不需要任何循环或条件语句(通过删除k(k + 1); k偶数)。