地图英里距离价格计算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);
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);