为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript更新数组值(如果存在),否则将新数组推送到对象

JavaScript更新数组值(如果存在),否则将新数组推送到对象

翻过高山走不出你 2021-04-30 13:18:45
我正在尝试更新数组中的值(如果找不到),如果没有,则向其中添加一个新数组。这是我一直在尝试的一些代码: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);

}


查看完整回答
反对 回复 2021-05-13
  • 1 回答
  • 0 关注
  • 263 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信