Javascript中的变量映射
下面的代码将-75到-90映射为-90到0,将90到75映射为0到90。有没有更简单的方法?如果有一个简单的方法可以做到这一点,那将是非常感谢,谢谢Javascript中的变量映射,javascript,mapping,Javascript,Mapping,下面的代码将-75到-90映射为-90到0,将90到75映射为0到90。有没有更简单的方法?如果有一个简单的方法可以做到这一点,那将是非常感谢,谢谢 if ((rtiltLR <= -75) && (rtiltLR >= -90)) { switch (rtiltLR) { case -75: yval = -90;
if ((rtiltLR <= -75) && (rtiltLR >= -90))
{
switch (rtiltLR)
{
case -75:
yval = -90;
break;
case -76:
yval = -84;
break;
case -77:
yval = -78;
break;
case -78:
yval = -72;
break;
case -79:
yval = -66;
break;
case -80:
yval = -60;
break;
case -81:
yval = -54;
break;
case -82:
yval = -48;
break;
case -83:
yval = -42;
break;
case -84:
yval = -36;
break;
case -85:
yval = -30;
break;
case -86:
yval = -24;
break;
case -87:
yval = -18;
break;
case -88:
yval = -12;
break;
case -89:
yval = -6;
break;
case -90:
yval = 0;
break;
}
}
if ((rtiltLR <= 90) && (rtiltLR >= 75))
{
switch (rtiltLR)
{
case 90:
yval = 0;
break;
case 89:
yval = 6;
break;
case 88:
yval = 12;
break;
case 87:
yval = 18;
break;
case 86:
yval = 24;
break;
case 85:
yval = 30;
break;
case 84:
yval = 36;
break;
case 83:
yval = 42;
break;
case 82:
yval = 48;
break;
case 81:
yval = 54;
break;
case 80:
yval = 60;
break;
case 79:
yval = 66;
break;
case 78:
yval = 72;
break;
case 77:
yval = 78;
break;
case 76:
yval = 84;
break;
case 75:
yval = 90;
break;
}
}
if((rtiltLR=-90))
{
交换机(rtiltLR)
{
案例-75:
yval=-90;
打破
案例-76:
yval=-84;
打破
案例-77:
yval=-78;
打破
案例-78:
yval=-72;
打破
案例-79:
yval=-66;
打破
案例-80:
yval=-60;
打破
案例-81:
yval=-54;
打破
案例-82:
yval=-48;
打破
案例-83:
yval=-42;
打破
案例-84:
yval=-36;
打破
案例-85:
yval=-30;
打破
案例-86:
yval=-24;
打破
案例-87:
yval=-18;
打破
案例-88:
yval=-12;
打破
案例-89:
yval=-6;
打破
案例-90:
yval=0;
打破
}
}
如果((rtiltLR=75))
{
交换机(rtiltLR)
{
案例90:
yval=0;
打破
案例89:
yval=6;
打破
案例88:
yval=12;
打破
案例87:
yval=18;
打破
案例86:
yval=24;
打破
案例85:
yval=30;
打破
案例84:
yval=36;
打破
案例83:
yval=42;
打破
案例82:
yval=48;
打破
案例81:
yval=54;
打破
案例80:
yval=60;
打破
案例79:
yval=66;
打破
案例78:
yval=72;
打破
案例77:
yval=78;
打破
案例76:
yval=84;
打破
案例75:
yval=90;
打破
}
}
试试这个
if ((rtiltLR <= -75) && (rtiltLR >= -90))
yval = (rtiltLR + 90) * -6;
else if ((rtiltLR <= 90) && (rtiltLR >= 75))
yval = (90 - rtiltLR) * 6;
if((rtiltLR=-90))
yval=(rtiltLR+90)*-6;
否则,如果((rtiltLR=75))
yval=(90-rtiltLR)*6;
您的案例陈述和您的结果之间是否存在任何关系?如果有,那么肯定会有更好的方法来做到这一点。如果没有,您可以使用JavaScript对象,其中键作为case语句,值作为结果。例如:
var map = {
"-75": -90,
"-76": -84,
// ...
"76": 84,
"75": 90
};
yval = map[rtiltLR.toString()]; // or just map[rtiltLR]
// or you could simplify things by computing negative values
var map = {
"90": 0,
// only positive values
"75": 90
};
yval = rtiltLR > 0 ? map[rtiltLR] : -map[-rtiltLR];
如果可以计算yValue,那么显然应该立即进行计算 如果确实存在一长组任意映射,我建议使用hashmap:
yValueLookup = {};
yValueLookup[-75] = -90;
yValueLookup[-76] = -84;
// etc
yValueLookup[89] = 6;
yValueLookup[90] = 0;
function getYvalue(rtiltLR) {
return yValueLookup[rtiltR];
}
@向下投票人请解释为什么给出向下投票,以便我可以改进我的问题不是我的向下投票…但在我看来,你应该能够解释将
-75
翻译为-90
背后的思维过程。有趣的是,从那以后,你完成了90%的工作。啊,谢谢@cHao!将确保在未来的帖子中包含