我有以下代码根据陀螺仪的伽玛值显示图像。我的第一枪是写一个switch语句,但是在我认为这可能是一种更干净的选择之前,已经使用了对象文字。有什么办法用下面的代码做到这一点?或其他清洁解决方案?

switch (true) {
        case (gamma <= -28):
            view360.goToItem(0);
            break;
        case (gamma <= -24):
            view360.goToItem(1);
            break;
        case (gamma <= -20):
            view360.goToItem(2);
            break;
        case (gamma <= -16):
            view360.goToItem(3);
            break;
        case (gamma <= -12):
            view360.goToItem(4);
            break;
        case (gamma <= -8):
            view360.goToItem(5);
            break;
        case (gamma <= -4):
            view360.goToItem(6);
            break;
        case (gamma <= 0):
            view360.goToItem(7);
            break;
        case (gamma <= 4):
            view360.goToItem(8);
            break;
        case (gamma <= 8):
            view360.goToItem(9);
            break;
        case (gamma <= 12):
            view360.goToItem(10);
            break;
        case (gamma <= 16):
            view360.goToItem(11);
            break;
        case (gamma <= 20):
            view360.goToItem(12);
            break;
        case (gamma <= 24):
            view360.goToItem(13);
            break;
        default:
            view360.goToItem(13);
    }

最佳答案

您的索引是gamma的函数,因此您应该将其编写为捕获该关系的函数。看起来该关系只是简单的(28 + gamma) / 4,附加的校验伽玛大于60。由于您使用不等式来捕获中间值,因此需要除以31并取下限。例如,这将允许34返回8。因此,这应与您的switches相匹配:

function getIndex(g) {
    return g > 60 ? 13 : Math.floor((31 + g) /  4)
}
view360.goToItem(getIndex(gamma))

关于javascript - 是否可以将包含真实值的switch语句写为对象文字查找?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50355004/

10-09 16:47