Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript——数组变量自动更新_Javascript_Angularjs - Fatal编程技术网

JavaScript——数组变量自动更新

JavaScript——数组变量自动更新,javascript,angularjs,Javascript,Angularjs,我正在为购物车功能编写代码。当我第一次向购物车添加产品时,对于每个产品,都会添加名为quantity的附加属性 这是我的代码: myStoreCartService.factory('Cart',function() { var userCart = []; var cartSummary = []; var cartConsolidatedData = []; var currentTotalMaster; function formCart() {

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

这是我的代码:

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数组中