地图英里距离价格计算javascript

时间:2017-10-04 18:17:22

标签: javascript dictionary distance point price

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);

请帮助我陷入逻辑之间

  

前10 // 50

     总共50 // 10 * 50 + 1.5(40英里+10)

2 个答案:

答案 0 :(得分:0)

您需要将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
}

另外,你应该为你的结果使用另一个变量。

答案 1 :(得分:0)

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

其次,您只需< ><=执行>=即可排除某些数字,我的例子中我选择min < variable <= max,但您可以轻松最小变量。

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

// 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);