aa(item) {
let color;
let eq1 = "";
let eq2 = "";
for (let i = 0; i < this.option.columnTow.length; i++) {
let element = this.option.columnTow[i];
console.log(parseInt(eq1) < parseInt(item.value))
if (eq1 != "" && eq2 != "" && parseFloat(eq1) < parseFloat(item.value) && parseFloat(item.value) < parseFloat(eq2)) {
color = element.prop;
break;
}
else if (eq1 != "" && eq2 != "" && parseFloat(eq2) < parseFloat(eq1)) {
if (element.equation == "大于" && parseFloat(item.value) > parseFloat(element.value)) {
color = element.prop;
break;
}
else if (element.equation == "小于" && parseFloat(item.value) < parseFloat(element.value)) {
color = element.prop;
break;
}
}
if (element.equation == "大于" && eq2 == "" && parseFloat(item.value) > parseFloat(element.value)) {
color = element.prop;
break;
}
if (element.equation == "小于" && eq1 == "" && parseFloat(item.value) < parseFloat(element.value)) {
color = element.prop;
break;
}
if (element.equation == "等于" && parseFloat(item.value) == parseFloat(element.value)) {
color = element.prop;
break;
}
}
return color;
}
编者 @边城 :像这种代码,可以格式化一下再按 Markdown 的代码语法来粘贴。
像这种多层if判断的如何优化简洁,感谢
function aa
的function
没写,我复制到IDE报错了。整体看下来逻辑不复杂,循环中判断条并修改color,打断循环,返回color
那实际上并不需要打断这个动作,直接返回值即可,也就是这段可以简化为
条件具备相似性,可以合并同类项。
一个是判断eq1和eq2,另一个是item.value 和 element.value,这部分简化下来就是
并且可以看出条件1到条件7是互异的,也就是其中一个成立,其他的肯定都是不成立的。所以顺序并不影响判断,我们调整顺序并用或链接起来
如果能将
条件14 == "大于" && 条件12 > 0
封装起来,会更加利于简化。