我需要检查给定数组中是否存在值(来自输入字段),以及该值是否也小于同一数组中的下一个值。
输入值用于更改购物车中的商品数量。根据该数量,将使用相应的价格来计算总数。
我有一个包含以下内容的数组;
[
{ 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} }}, 等等。因此,它不仅要查找匹配的数字,还要检查数字是否低于上述数组中的以下数字。
是否有一种良好而干净的方式来完成这样的事情?我搜索了一些例子,但找不到与我相同的例子。
答案 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>