我有以下代码根据陀螺仪的伽玛值显示图像。我的第一枪是写一个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并取下限。例如,这将允许3
和4
返回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/