地图英里距离价格计算javascript

map mile distance price calculation javascript

var miles = 120;

if (miles > 0 && miles < 10)
{
    miles = miles*50;
}

if (miles > 10 && miles < 40)
{
    miles = ((miles-10)*1.5)+(10*50);
}

if (miles > 40 && miles < 100)
{
    miles = ((miles-40)*2)+(10*1.5)+(10*50);
}

if (miles > 100 && miles < 1000)
{
    miles = ((miles-100)*2.5)+(40*2)+(10*1.5)+(10*50);
}

console.log(miles);

请帮助我陷入逻辑

first 10 //50

total 50 //10*50+ 1.5 (40 miles + 10)

您需要将 else 添加到您的 if 语句中,否则它将不起作用

var miles = 120;

if( miles > 0 && miles <= 10)
{
    miles = miles*50;
}
else if(miles > 10 && miles <= 40)
{
    miles = ((miles-10)*1.5)+(10*50);
}
else if( miles > 40 && miles <= 100)
{
    miles = ((miles-40)*2)+(10*1.5)+(10*50);
}
else if(miles > 100 && miles <= 1000)
{
    miles = ((miles-100)*2.5)+(40*2)+(10*1.5)+(10*50);
}
else{
    //maybe do something here
}

此外,您应该为结果使用另一个变量。

我注意到的第一件事是你应该使用 if/else if 因为你真的只想抓住一个桶,这个结构使它在视觉上更清楚地相关。

其次,您在不使用 <=>= 的情况下通过执行 < > 来排除一些数字,对于我的示例,我选择执行 min < variable <= max 但您可以和 min 变量一样容易。

为了清楚起见,我将其分成函数并将其中一个应用于数字原型以便于使用。

// check if given number is greater than min less than or equal to max
Number.prototype.between = function(min, max) {
  return (this > min && this <= max);
}

// calculates your mileage amounts
const calcRate = distance => {
  if (distance.between(0, 10)) {
    return ( distance * 50 );
  } else if (distance.between(10, 40)) {
    return ( ( ( distance - 10 ) * 1.5 ) + ( 10 * 50 ) );
  } else if (distance.between(40, 100)) {
    return ( ( ( distance - 40 ) * 2 ) + ( 10 * 1.5 ) + ( 10 * 50 ) );
  } else if (distance.between(100, 1000)) {
    return ( ( ( distance - 100 ) * 2.5 ) + ( 40 * 2 ) + ( 10 * 1.5 ) + ( 10 * 50 ) );
  } else if (distance > 1000) {
    // do something
  }
}
// test variable
let miles = 120;
// test result
let result = calcRate(miles);
// log result
console.log(result);