2017-10-04 61 views
0
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); 

请帮助i的逻辑之间地图英里距离价格计算的javascript

第一10 // 50

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

+1

它应该做什么? –

+0

两个地理点的票价计算。 – bugHunter

+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 
} 

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

+0

如果有人选择了40,10,100 100 – epascarello

+0

,那么代码仍然存在问题,他还需要检查这些数字(编辑) –

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