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];
}