我需要在jQuery中对里程价格进行一些计算。
比如说距离= 10
关税如:
----------------------------
| Mileage | Rate |
----------------------------
| 1 | 1.5 |
----------------------------
| 5 | 3 |
----------------------------
| 999 | 1.2 |
----------------------------
这意味着第一英里将为1.50英镑,第二至第五英里为3.00英镑,而每增加一英里则为1.20英镑。
这将使10英里的旅程=£19.50
我真的不知道从哪里开始,所以任何帮助都会非常感激。
我能想到的只有: -
var distance = 10
// create a key value pair (although this isn't correct)
var tariff = {mileage: 1, rate: 1.5, mileage: 5, rate: 3, mileage: 999, rate: 1.2};
然后循环关税: -
for (var i = 0; i < distance; i++) {
//multiply mileage by rate
}
//get sum of values from loop
答案 0 :(得分:2)
这是一个选项。
将您的资费对象更改为数组并执行反向for
循环,使用i
作为当前里程。
var distance = 10; cost = 0;
var tariff = [{ mileage: 1, rate: 1.5 },{ mileage: 5, rate: 3 },{ mileage: 999, rate: 1.2 }];
for (var i = 0; i < distance; i++) {
var milePrice = 0;
for (var j = tariff.length; j--;) {
if (i < tariff[j].mileage)
milePrice = tariff[j].rate;
}
cost += milePrice;
}
document.write(cost.toFixed(2));
答案 1 :(得分:0)
我认为这个简单的例子可能是您所寻找的,或者至少是一个好的开始。
$(document).ready(function() {
$(":input").bind('keyup mouseup', function () {
var distance = $(this).val();
var cost = 0;
var tariff = [{mileage: 1, rate: 1.5}, {mileage: 5, rate: 3}, {mileage: 999, rate: 1.2}];
for (var i = 0; i < distance; i++) {
//multiply mileage by rate
if(i < tariff[0].mileage) {
cost += tariff[0].rate;
} else if(i < tariff[1].mileage) {
cost += tariff[1].rate;
} else if(i < tariff[2].mileage) {
cost += tariff[2].rate;
}
}
$('#cost').html(cost.toFixed(2));
})
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<label>Mileage</label>
<input type='number' value='0'/>
</form>
<p>Cost: <span id='cost'></span></p>