【发布时间】:2017-03-04 11:20:44
【问题描述】:
我在一个函数中有以下(示例)jQuery 代码,如您所见,它包含一些可怕的 if/else 语句,其中包含大量重复的排序。是否有更好(更高性能、更干燥、更易读)的方式来处理所有这些 if/else 语句?
我也不想仅仅连接不同的选项,每个 if 的结果在每种情况下都会非常不同。
var qux = "";
if (foo == 'a') {
if (bar == 'x') {
if (baz == 'm') {
qux = $('#div').html('result 1');
} else if (baz == 'n') {
qux = $('#div').html('result 2');
}
} else if (bar == 'y') {
if (baz == 'm') {
qux = $('#div').html('result 3');
} else if (baz == 'n') {
qux = $('#div').html('result 4');
}
} else if (bar == 'z') {
if (baz == 'm') {
qux = $('#div').html('result 5');
} else if (baz == 'n') {
qux = $('#div').html('result 6');
}
}
} else if (foo == 'b') {
if (bar == 'x') {
if (baz == 'm') {
qux = $('#div').html('result 7');
} else if (baz == 'n') {
qux = $('#div').html('result 8');
}
} else if (bar == 'y') {
if (baz == 'm') {
qux = $('#div').html('result 9');
} else if (baz == 'n') {
qux = $('#div').html('result 10');
}
} else if (bar == 'z') {
if (baz == 'm') {
qux = $('#div').html('result 11');
} else if (baz == 'n') {
qux = $('#div').html('result 12');
}
}
} else if (foo == 'c') {
if (bar == 'x') {
if (baz == 'm') {
qux = $('#div').html('result 13');
} else if (baz == 'n') {
qux = $('#div').html('result 14');
}
} else if (bar == 'y') {
if (baz == 'm') {
qux = $('#div').html('result 15');
} else if (baz == 'n') {
qux = $('#div').html('result 16');
}
} else if (bar == 'z') {
if (baz == 'm') {
qux = $('#div').html('result 17');
} else if (baz == 'n') {
qux = $('#div').html('result 18');
}
}
}
编辑:更改代码以进行澄清。
【问题讨论】:
-
我认为真正的噩梦是使用 = 而不是 ==。另外,为什么首先需要这样做?想想你想做什么。为什么不直接添加
foo、bar和baz? -
连接
foo、bar和baz并将其用作查找表的键......虽然看起来你只需连接它们就可以了(除非仅用于示例)。 -
您可以将 foo、bar 和 baz 连接成一个数组,然后通过它进行映射。使用 map 函数或 forEach。
-
这里有一个使用 switch 语句的快速方法:jsfiddle.net/Ljmukr5m
-
对不起,qux 的组合只是一个例子,我不是要连接,每个结果都会完全不同..编辑问题以澄清..
标签: javascript jquery if-statement optimization