繁体   English   中英

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

[英]Javascript update array value if exists otherwise push new array to object

我试图更新数组中的值,如果找到它,如果不是,那么添加一个新的数组。

这是我一直在尝试的一些代码:

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 = 2
return; 
}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);
}

因为index存储项的索引, x是在该行之后不可用的临时值。 改为使用find ,并确保每次都查看相同的items

var item = cartItems.items.find(x => x.name == name);
if (item) {
  item.quantity = 2;
} else {
  cartItems.items.push(item);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM