检查数组中的值是否存在,以及它是否小于此数组中的下一个值

时间:2018-01-18 11:57:17

标签: jquery arrays json loops each

我需要检查给定数组中是否存在值(来自输入字段),以及该值是否也小于同一数组中的下一个值。

输入值用于更改购物车中的商品数量。根据该数量,将使用相应的价格来计算总数。

我有一个包含以下内容的数组;

[
  { id: 1, price: "20.0000", qty: "2.0000" },
  { id: 2, price: "15.0000", qty: "4.0000" },
  { id: 3, price: "10.0000", qty: "8.0000" }
]

假设输入值为2,那么我想要计算的价格为20.0000,如果输入值为3,则价格也为{{1} }}, 等等。因此,它不仅要查找匹配的数字,还要检查数字是否低于上述数组中的以下数字。

是否有一种良好而干净的方式来完成这样的事情?我搜索了一些例子,但找不到与我相同的例子。

2 个答案:

答案 0 :(得分:0)

也许这样的事情可行吗?

var input = $('#input').val();
if(input > 1)
{
  if(array[input].price < array[input+1].price)
  {
    return array[input+1].price;
  }
}

答案 1 :(得分:0)

以下是一个如何工作的示例,只需听取数量输入更改并相应更新。 向后循环价格数组,直到您达到与您的输入匹配的数量并使用该价格。

var prices = [
  { id: 1, price: "20.0000", qty: "2.0000" },
  { id: 2, price: "15.0000", qty: "4.0000" },
  { id: 3, price: "10.0000", qty: "8.0000" }
];

function updatePrice(quantity, price) {
  $('#itemPrice').text(price);
  $('#totalPrice').text(quantity * price);
}

function calculatePrice() {
  var quantity = parseInt($('#quantity').val(), 10) || 0,
      itemPrice = parseInt($('#itemPrice').val(), 10) || parseInt(prices[0].price, 10);
  
  for(var i = prices.length - 1; i >= 0; i--) {
    if(quantity >= parseInt(prices[i].qty, 10)) {
      itemPrice = parseInt(prices[i].price, 10);
      break;
    }
  }
  updatePrice(quantity, itemPrice);
}

calculatePrice();

$('#quantity').on('input', calculatePrice);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" id="quantity" value="0">
<br/>
Price per item: <span id="itemPrice"></span>
<br/>
Total price: <span id="totalPrice"></span>