将输入与数组对匹配

时间:2012-10-26 21:02:47

标签: javascript

我正在尝试创建一个脚本,根据输入的值自动显示价格。

我的价格折扣可能是:

1 item or more = "£5";
5 items or more = "£30";
10 items or more = "£55";

因此,当用户在输入框中键入“7”时,价格将显示为£30*7

我知道如何做到这一点的唯一方法是为每个案例制作一个if else语句,但我猜这是一种更简单的方法吗?

这是我的伪代码:

<script>

function calc() {
var amountVar = document.getElementById('amount').value;

var discount = new Array();
discount[1] = "£5";
discount[5] = "£30";
discount[10] = "£55";

match = discount where amountVar matches key or more;

document.getElementById('price').innerHTML = match;
}

</script>

<input onkeyup="calc();" id="amount">
<br>
Price: <p id="price"></p>

1 个答案:

答案 0 :(得分:1)

而不是if/else,您可以将它们全部放在一个数组中,然后在for循环中遍历数组,直到找到匹配的折扣。这有几个优点,主要是在不编写新代码的情况下编辑折扣数组是微不足道的。

// array must be sorted by qty
var discounts = [{qty:1, discount:5}, {qty:5, discount:30}, {qty:10, discount:55}];

function calcPrice (qty) {
    qty = +qty;

    if (qty > 0)
    {
      // look through the array from the end and find first matching discount
      for (var i = discounts.length; i--;) {
          if (qty >= discounts[i].qty) {
              return discounts[i].discount;
          }
      }
    }

    return 0;
}