jQuery For Array计算数组

时间:2016-02-18 23:08:04

标签: jquery

我需要在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

2 个答案:

答案 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>