我正在尝试更新数组中的值(如果找不到),如果没有,则向其中添加一个新数组。这是我一直在尝试的一些代码:var cartItems = {};var items = []cartItems.items = items;$('.proAdd').click(function(){var name = $(this).attr("data-name");var price = parseFloat($(this).attr("data-price"));var quantity = parseInt($(this).attr("data-quantity"));var item = {"name": name,"price": price,"quantity": quantity}items.forEach(function(item) {if (item.name === name) {item.quantity = 2return; }else{cartItems.items.push(item);}});在此版本中,注释被推送。如果我取出else分支,则它会更新它,但也会推送它。我为此制造了一个小提琴。也尝试过此方法,但它说x.quantity未定义:var index = items.findIndex(x => x.name==name)if (index != -1){x.quantity = 2}else {cartItems.items.push(item);}
1 回答

PIPIONE
TA贡献1829条经验 获得超9个赞
因为index存储项目的索引,并且x是该行之后不可用的临时值。请find改用,并确保items每次都看的相同:
var item = cartItems.items.find(x => x.name == name);
if (item) {
item.quantity = 2;
} else {
cartItems.items.push(item);
}
添加回答
举报
0/150
提交
取消