我正在尝试检查数组中是否存在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]);
}
});
}
});
答案 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;