猿问

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

我正在尝试更新数组中的值(如果找不到),如果没有,则向其中添加一个新数组。


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


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);

}


翻过高山走不出你
浏览 265回答 1
1回答

PIPIONE

因为index存储项目的索引,并且x是该行之后不可用的临时值。请find改用,并确保items每次都看的相同:var item = cartItems.items.find(x => x.name == name);if (item) {  item.quantity = 2;} else {  cartItems.items.push(item);}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答