最优雅的方式设置"结束条件"增量/减量?

时间:2017-02-21 10:28:48

标签: javascript

假设我们有一辆车开往目的地:

第一种情况:

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;

1 个答案:

答案 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

但是这并不是准确地在目的地进行,并且有点像原始代码