2016-02-18 1 views
3

Мне нужно сделать калькуляцию стоимости пробега в jQuery.jQuery Для расчета петли по массиву

Скажем, например, расстояние = 10

На тарифе, такие как:

---------------------------- 
| Mileage | Rate   | 
---------------------------- 
| 1 | 1.5   | 
---------------------------- 
| 5 | 3    | 
---------------------------- 
| 999 | 1.2   | 
---------------------------- 

что означает, что было бы 1,50 £ для первой мили, 3,00 £ для 2-го по 5-й, а затем £ 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

Похоже, у вас есть понятия кода выяснили, по существу, и просто нужно сесть с карандашом и бумагой и разработать математическую формулу. Не совсем понятно, какова ваша конкретная проблема: – charlietfl

+1

попробуйте это: https://jsfiddle.net/DinoMyte/fxvfpoaw/ – DinoMyte

+0

Спасибо @DinoMyte - только мне нужно добавить, вероятно, больше шагов, то есть до 10 миль, до 20, до 30 и так далее. Затем сделайте то же самое для разных типов транспортных средств, чтобы это немного усложнилось. – nsilva

ответ

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

0

Я думаю, что это быстрый пример может быть то, что ищете, или по крайней мере хороший место для начала.

$(document).ready(function() { 
 
    $(":input").bind('keyup mouseup', function() {   
 
    \t 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++) { 
 
    \t //multiply mileage by rate 
 
     if(i < tariff[0].mileage) { 
 
     \t cost += tariff[0].rate; 
 
     } else if(i < tariff[1].mileage) { 
 
     \t cost += tariff[1].rate; 
 
     } else if(i < tariff[2].mileage) { 
 
     \t 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>

Смежные вопросы