Javascript 需要优化if语句
我做了一个货币转换器,结果证明条件运算符几乎相同,最好通过三元运算符进行优化Javascript 需要优化if语句,javascript,if-statement,optimization,Javascript,If Statement,Optimization,我做了一个货币转换器,结果证明条件运算符几乎相同,最好通过三元运算符进行优化 var exchan=document.getElementById(“exchan”); exchan.addEventListener(“单击”,函数(e){ var numberOne=document.getElementById(“numberOne”).value; var numberTwo=document.getElementById(“numbertw”); 性别变化; var currencyO
var exchan=document.getElementById(“exchan”);
exchan.addEventListener(“单击”,函数(e){
var numberOne=document.getElementById(“numberOne”).value;
var numberTwo=document.getElementById(“numbertw”);
性别变化;
var currencyOne=document.getElementById(“currencyOne”).value;
var currencyTwo=document.getElementById(“currencyTwo”).value;
如果(货币一=乌克兰格里夫纳和货币二=美元){
numberTwo.value=(numberOne/cursUSD).toFixed(2);
}
如果(货币一号==“乌克兰格里夫纳”和货币二号==“欧元”){
numberTwo.value=(numberOne/curser).toFixed(2);
}
如果(当前一期==“UAH”和当前二期==“PLN”){
numberTwo.value=(numberOne/cursPLN).toFixed(2);
}
},假)代码>而不是独立变量cursud
,cursur
等,考虑使用货币缩写索引的对象。然后,只需在对象上查找转换因子:
const conversions = {
USD: <value of cursUSD>,
EUR: <value of cursEUR>,
PLN: <value of cursPLN>
};
const exchan = document.getElementById("exchan");
exchan.addEventListener("click", function(e) {
const [numberOneVal, currencyOneVal, currencyTwoVal] = ['numberOne', 'currencyOne', 'currencyTwo']
.map(id => document.getElementById(id).value);
if (currencyOneVal === "UAH" && conversions[currencyTwoVal]) {
document.getElementById("numberTwo").value = (numberOneVal / conversions[currencyTwoVal]).toFixed(2);
}
}, false);
const转换={
美元:,
欧元:,
印尼国家电力公司:
};
const exchan=document.getElementById(“exchan”);
exchan.addEventListener(“单击”,函数(e){
常量[numberOneVal,currencyOneVal,currencyTwoVal]=['numberOne','currencyOne','currencyTwo']
.map(id=>document.getElementById(id).value);
if(currencyOneVal==“UAH”&&conversions[currencyTwoVal]){
document.getElementById(“numberTwo”).value=(numberOneVal/conversions[currencytowal])到fixed(2);
}
},假);
而不是独立变量cursud
,cursur
等,考虑使用货币缩写索引的对象。然后,只需在对象上查找转换因子:
const conversions = {
USD: <value of cursUSD>,
EUR: <value of cursEUR>,
PLN: <value of cursPLN>
};
const exchan = document.getElementById("exchan");
exchan.addEventListener("click", function(e) {
const [numberOneVal, currencyOneVal, currencyTwoVal] = ['numberOne', 'currencyOne', 'currencyTwo']
.map(id => document.getElementById(id).value);
if (currencyOneVal === "UAH" && conversions[currencyTwoVal]) {
document.getElementById("numberTwo").value = (numberOneVal / conversions[currencyTwoVal]).toFixed(2);
}
}, false);
const转换={
美元:,
欧元:,
印尼国家电力公司:
};
const exchan=document.getElementById(“exchan”);
exchan.addEventListener(“单击”,函数(e){
常量[numberOneVal,currencyOneVal,currencyTwoVal]=['numberOne','currencyOne','currencyTwo']
.map(id=>document.getElementById(id).value);
if(currencyOneVal==“UAH”&&conversions[currencyTwoVal]){
document.getElementById(“numberTwo”).value=(numberOneVal/conversions[currencytowal])到fixed(2);
}
},假);
您可以在顶部检查“currencyOne”,因为您的所有检查都需要它,并且它将计算一次。
您可以创建一个变量来保存操作的值,因为唯一改变的是currencyTwo的值,因此您只有一行'numberTwo.value'赋值。如果if/else不适合您进行内部检查,则可以使用开关
var curOperator;
if(currencyOne=="UAH")
{
if(currencyTwo=="USD") curOperator = cursUSD;
else if(currencyTwo=="EUR") curOperator = cursEUR;
else if(currencyTwo=="PLN") curOperator = cursPLN;
else
throw;
}
numberTwo.value=(numberOne/curOperator).toFixed(2);
您可以在顶部检查“currencyOne”,因为您的所有检查都需要它,并且它将评估一次。
您可以创建一个变量来保存操作的值,因为唯一改变的是currencyTwo的值,因此您只有一行'numberTwo.value'赋值。如果if/else不适合您进行内部检查,则可以使用开关
var curOperator;
if(currencyOne=="UAH")
{
if(currencyTwo=="USD") curOperator = cursUSD;
else if(currencyTwo=="EUR") curOperator = cursEUR;
else if(currencyTwo=="PLN") curOperator = cursPLN;
else
throw;
}
numberTwo.value=(numberOne/curOperator).toFixed(2);
如果currencyOne是UAH,那么currencyTwo
是否总是这三者之一?美元、欧元、兹罗提?(这将简化逻辑)为什么条件运算符会更“优化”?某些性能稍后我想将美元与乌克兰格里夫纳欧元与乌克兰格里夫纳欧元相加…如果currencyOne是乌克兰格里夫纳,那么currencyTwo
将始终是这三者之一吗?美元、欧元、兹罗提?(这将简化逻辑)为什么条件运算符会更“优化”@CertainPerformance稍后我想将USD添加到UAH EUR到UAH…我甚至会使用具有二维的查找表,因此,您可以执行类似于if(lookup[currencyOne])exchangeRate=lookup[currencyOne][currencyTwo的操作
这样,您就不需要额外的逻辑来检查是否可以从某个内容转换为另一个内容,只需正确填写查找表即可。如果你有UAD->USD
的汇率,你可以计算出汇率的倒数,然后填写表格。我甚至会选择一个二维的查找表,所以你可以做类似if(lookup[currencyOne])exchangeRate=lookup[currencyOne][currencyTwo的事情
这样,您就不需要额外的逻辑来检查是否可以从某个内容转换为另一个内容,只需正确填写查找表即可。这也可以来自文件和/或生成的-如果你有UAD->USD
的汇率,你可以计算相反的值并填写表格。