gpt4 book ai didi

JavaScript——数组变量自动更新

转载 作者:行者123 更新时间:2023-12-03 12:13:32 27 4
gpt4 key购买 nike

我正在编写购物车功能的代码。当我将产品添加到购物车时,对于每个产品,第一次都会添加称为数量的附加属性。

这是我的代码:

myStoreCartService.factory('Cart',function() {
var userCart = [];
var cartSummary = [];

var cartConsolidatedData = [];
var currentTotalMaster;

function formCart() {
cartConsolidatedData = [];
var dup = false;
var temp;

for(x in userCart) {
dup = false;

for(z in cartConsolidatedData) {
if(cartConsolidatedData[z].productname == userCart[x].productname) {
cartConsolidatedData[z].quantity = cartConsolidatedData[z].quantity + 1;
dup = true;
break;
}
}

if(!dup) {
// temp = userCart[x];
// temp.quantity = 1;
cartConsolidatedData.push(userCart[x]);

for(y in cartConsolidatedData) {
if(cartConsolidatedData[y].productname == userCart[x].productname) {
cartConsolidatedData[y].quantity = 1;
break;
}
}
}
}
};

return {
addItemToCart: function(cartData) {
console.log(cartData);
userCart.push(cartData);
formCart();
},
retrieveCart: function() {
return userCart;
}
});

这里甚至 userCart 变量中的第一个项目也获得了数量属性,但是只有 cartConsolidatedData 变量的值应该具有此属性。

我在这里陷入了困境。

最佳答案

我不确定我是否理解您的代码,但我认为 cartData 是一个对象,您可以像这样将该对象推送到 userCart

userCart.push(cartData);

然后使用此命令将同一对象推送到 cartConsolidatedData

cartConsolidatedData.push(userCart[x]);

所以当你这样做时:

cartConsolidatedData[y].quantity=1;

您正在向 cartData 对象添加一个属性,而不是像您在 cartConsolidatedData 数组中声明的那样。因为 cartConsolidatedData[y] 是一个 cartData 对象,而且它是一个引用,这意味着您对其所做的任何更改也将反射(reflect)在指向相同 cartData 的 userCart 数组中。

关于JavaScript——数组变量自动更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24838745/

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