JavaScript——数组变量自动更新
我正在为购物车功能编写代码。当我第一次向购物车添加产品时,对于每个产品,都会添加名为quantity的附加属性 这是我的代码:JavaScript——数组变量自动更新,javascript,angularjs,Javascript,Angularjs,我正在为购物车功能编写代码。当我第一次向购物车添加产品时,对于每个产品,都会添加名为quantity的附加属性 这是我的代码: myStoreCartService.factory('Cart',function() { var userCart = []; var cartSummary = []; var cartConsolidatedData = []; var currentTotalMaster; function formCart() {
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变量中的第一个项都可以获得quantity属性,但是cartConsolidatedData变量的值应该具有this属性
我在这里过得不好 我不确定我是否理解您的代码,但我假设cartData是一个对象,您可以像这样将该对象推送到userCart
userCart.push(cartData);
然后使用此命令将同一对象推送到cartConsolidatedData
cartConsolidatedData.push(userCart[x]);
所以当你这样做的时候:
cartConsolidatedData[y].quantity=1;
您正在向cartData对象添加属性,而不是向cartConsolidatedData数组添加属性。因为cartConsolidatedData[y]是cartData对象,而且它是一个引用,这意味着您对它所做的任何更改都将反映在指向同一cartData的userCart数组中