2014-07-19 69 views
0

您好我正在編寫購物車功能的代碼。當我將產品添加到購物車時,對於每個產品,第一次添加稱爲數量的附加屬性。下面JavaScript--數組變量自動更新

是我的代碼:

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(); 
     }, 

     retiveCart: function(){ 
      return userCart; 
     } 
}); 

在這裏,就連拳頭項目在userCart GET變量數量屬性,但只是cartConsolidatedData變量的值應該已經得到了這個屬性。

我在這裏遇到了不好的時間。

回答

1

我不知道我理解你的代碼,但我想cartData是一個對象,你推該對象userCart這樣

userCart.push(cartData); 

然後你把相同的對象cartConsolidatedData與此命令

cartConsolidatedData.push(userCart[x]); 

所以,當你這樣做:

cartConsolidatedData[y].quantity=1; 

要添加屬性cartData對象,而不是您指向cartConsolidatedData數組的狀態。由於cartConsolidatedData [y]是一個cartData對象,並且由於它是一個引用,它意味着您對它做的任何更改都會反映在指向相同cartData的userCart數組中。