Javascript 中的映射变量
Mapping variables in Javascript
我有以下代码,将 -75 到 -90 映射到 -90 到 0,并将 90 到 75 映射到 0 到 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 <= -75) && (rtiltLR >= -90))
yval = (rtiltLR + 90) * -6;
else if ((rtiltLR <= 90) && (rtiltLR >= 75))
yval = (90 - rtiltLR) * 6;
你的案例陈述和你的结果之间有什么关系吗?如果有,那么肯定会有更好的方法来做到这一点。如果没有,您可以使用带有键的 JavaScript 对象作为您的案例语句,并将值作为结果。例如:
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,那么您显然应该即时计算。
如果真的有很长的任意映射集,我建议使用哈希图:
yValueLookup = {};
yValueLookup[-75] = -90;
yValueLookup[-76] = -84;
// etc
yValueLookup[89] = 6;
yValueLookup[90] = 0;
function getYvalue(rtiltLR) {
return yValueLookup[rtiltR];
}
我有以下代码,将 -75 到 -90 映射到 -90 到 0,并将 90 到 75 映射到 0 到 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 <= -75) && (rtiltLR >= -90))
yval = (rtiltLR + 90) * -6;
else if ((rtiltLR <= 90) && (rtiltLR >= 75))
yval = (90 - rtiltLR) * 6;
你的案例陈述和你的结果之间有什么关系吗?如果有,那么肯定会有更好的方法来做到这一点。如果没有,您可以使用带有键的 JavaScript 对象作为您的案例语句,并将值作为结果。例如:
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,那么您显然应该即时计算。
如果真的有很长的任意映射集,我建议使用哈希图:
yValueLookup = {};
yValueLookup[-75] = -90;
yValueLookup[-76] = -84;
// etc
yValueLookup[89] = 6;
yValueLookup[90] = 0;
function getYvalue(rtiltLR) {
return yValueLookup[rtiltR];
}