2017-10-04 63 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);