从jquery数组中获取数据和值

时间:2015-02-09 06:12:14

标签: jquery

我正在尝试检查数组中是否存在id,如果id已存在,那么我将更新该id的值。否则我会将id及其值推送到数组中。我怎样才能用jquery实现呢?

我已经尝试但它不起作用,但是数组的大小加倍

    $(itemData).each(function() {
        var name = $(this).data("name");
        var value = parseFloat($(this).data("amount"));

        if(dataArr.length == 0) {
            dataArr.push([name, value]);

        } else {
            $.each(dataArr, function(n, v) {
                if(name == n) {
                    v += value;
                }else {
                    dataArr.push([name, value]);
                }
            });
        }
    });

2 个答案:

答案 0 :(得分:1)

我想用哈希(对象文字)而不是数组会更容易:

var dataObj = {};
$(itemData).each(function() {
        var name = $(this).data("name");
        var value = parseFloat($(this).data("amount"));
        dataObj[name] = typeof dataObj[name] !== 'undefined' ? dataObj[name] + value : value;
});

答案 1 :(得分:1)

你很近,请尝试以下方法:



$(function() {
  var itemData = $('.item-data'),
    dataArr = [];

  $(itemData).each(function() {
    var name = $(this).data("name");
    var value = parseFloat($(this).data("amount"));

    var found = false;
    $.each(dataArr, function(index, val) {
      if (!found && name == val[0]) {
        val[1] += value;
        found = true;
      }
    });
    if (!found) {
      dataArr.push([name, value]);
    }
  });

  console.log('dataArray = ', dataArr);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="item-data" data-name="name1" data-amount="1"></div>
<div class="item-data" data-name="name2" data-amount="2"></div>
<div class="item-data" data-name="name1" data-amount="3"></div>
<div class="item-data" data-name="name2" data-amount="4"></div>
<div class="item-data" data-name="name3" data-amount="5"></div>
&#13;
&#13;
&#13;