gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 23:46:09 25 4
gpt4 key购买 nike

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

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

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 分支,那么它会更新它,但也会推送它。我创建了一个fiddle for this .

也尝试过这个,但它说 x.quantity 未定义:

var index = items.findIndex(x => x.name==name)
if (index != -1){
x.quantity = 2
}
else {
cartItems.items.push(item);
}

最佳答案

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

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

关于Javascript 更新数组值(如果存在),否则将新数组推送到对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55858037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com