从输入数据值创建Javascript多维数组

时间:2018-06-25 05:58:44

标签: javascript jquery multidimensional-array

我正在处理表上的一些数字字段。该表包含项目名称,单价和已归档的数量(数量)。每次增加或减少的数量我都希望包含{ {1}},item nameitem unit priceitem Amount

例如这样的

total price of that item

如果数量为items = [ ['Name', '5', '2', '10'], ['Name2', '15', '2', '30'], ] ,则该项目将不会在数组中发生。

zero
jQuery(document).ready(function() {
  jQuery(document).on('input', '.se-ticket-qty', function() {
    var items = GetItems();

    // jQuery('input#items').val(items);
    console.log(items);
  });

  function GetItems() {
    jQuery(".se-ticket-qty").each(function(index) {
      var items = [];
      var item_name = jQuery(this).data('name');
      var unit_price = parseFloat(jQuery(this).data('unit-price'));
      var amount = parseFloat(jQuery(this).val());
      var totalPrice = unit_price * amount;

      items = [item_name, unit_price, amount, totalPrice];
    });
    return items;
  }
});

1 个答案:

答案 0 :(得分:2)

您正在将items重新分配给新阵列

  1. 在每个块外初始化数组
  2. 使用.push()方法填充新的数组元素
  3. 使用unitPrice方法时,请使用 camelCase ,即将.data()用作虚线键。
  4. zero
  5. 添加条件语句

代码

function GetItems() {
  var items = []; //Initialize 
  jQuery(".se-ticket-qty").each(function(index) {
    var item_name = jQuery(this).data('name');
    var unit_price = parseFloat(jQuery(this).data('unitPrice'));
    var amount = parseFloat(jQuery(this).val());
    //Add condtion for zero
    if (amount > 0) { 
      var totalPrice = unit_price * amount;
      items.push([item_name, unit_price, amount, totalPrice]); //Use push
    }
  });
  return items;
}

jQuery(document).on('input', '.se-ticket-qty', function() {
  var items = GetItems();

  console.clear();
  console.log(items);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <th>Front Row</th>
    <td><span class="se-curency">$ </span>5</td>
    <td>
      <input min="0" data-name="Front Row" data-unit-price="5" class="se-ticket-qty" type="number" value="0" />
    </td>
  </tr>
  <tr>
    <th>VIP Seat</th>
    <td><span class="se-curency">$ </span>10</td>
    <td>
      <input min="0" data-name="VIP Seat" data-unit-price="10" class="se-ticket-qty" type="number" value="0" />
    </td>
  </tr>
</table>