假设我们有一辆车开往目的地:
第一种情况:
destination to: 100px
第二种情况:
destination to: -50px
伪代码:
var currentValueToAdd;
if (valueToIncrementPosition > 0) {
if (currentPositionOfCar <= destination) {
currentValueToAdd = valueToIncrementPosition;
} else {
currentValueToAdd = 0;
}
} else {
if (currentPositionOfCar >= destination) {
currentValueToAdd = valueToIncrementPosition;
}
else {
currentValueToAdd = 0;
}
}
car.style.position += currentValueToAdd + "px";
如您所见,我可以增加-n或n,结尾可以低于或高于当前的汽车位置。所以我开车停车的条件确实在不到目的地之间变化。
有没有更好的方法来编写上述解决方案以使汽车停止?可能是某种公式?
我的其他想法是使用看起来不正确的绝对值:
Math.abs(currentPositionOfCar) > Math.abs(destination) ? 0 : valueToIncrementPosition;
答案 0 :(得分:1)
currentPositionOfCar = Math.min(currentPositionOfCar + valueToIncrementPosition, Math.abs(destination));
没有这样的名字:
a = Math.min(a + b, Math.abs(c));
// Golfed:
a=(m=Math).min(a+b,m.abs(c)); // Don't use this, this is very hacky
这也有好处,它使汽车完全停在fhs目的地。
如果你真的想要一个简短的:
a += b;
a > Math.abs(c) && a -= b;
// Golfed:
(a+=b)>Math.abs(c)&&a-=b
但是这并不是准确地在目的地进行,并且有点像原始代码