Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Arrays_Angularjs_Angularjs Scope_Angular Chart - Fatal编程技术网

Javascript:数组在迭代后未被向右推送或覆盖

Javascript:数组在迭代后未被向右推送或覆盖,javascript,arrays,angularjs,angularjs-scope,angular-chart,Javascript,Arrays,Angularjs,Angularjs Scope,Angular Chart,我正在为shoppinglist应用程序开发一个通过角度图表的统计视图。 它应该显示每个用户一年所有支出成本的图表。 下面是我为图表生成JSON的方法: $scope.data = { series: users, data: [] }; console.log(chartdata); $scope.load = function(){ for(var i = 0; i< months.length; i++){

我正在为shoppinglist应用程序开发一个通过角度图表的统计视图。 它应该显示每个用户一年所有支出成本的图表。 下面是我为图表生成JSON的方法:

$scope.data = {
        series: users,
        data: []
    };
    console.log(chartdata);
    $scope.load = function(){
        for(var i = 0; i< months.length; i++){

            for(var z = 0; z < chartdata.length; z++){
                var obj = chartdata[z];
                if(obj.year == $scope.dt.getFullYear()){
                    if(obj.month == months[i]){

                        for(var t =0; t < users.length;t++){
                            if(obj.name == users[t]){
                                usercosts[t] = (usercosts[t] + obj.price);
                                console.log(obj.price);
                                console.log(usercosts);
                            }
                        }
                    }
                }
            }
            console.log(usercosts);
            $scope.data.data.push({x:months[i],y: usercosts});
            for(var p = 0; p < users.length; p++){
                usercosts[p]=0;
            }
        }
        console.log($scope.data.data);
    };
数组填充得很好,但push语句:

$scope.data.data.push({x:months[i],y: usercosts});
只是工作不正常。 “用户成本”在每一行中都是相同的值。。。。最后一个;在本例中为0。 虽然我在下个月之前会努力。 我现在不知道该怎么办了,如果你能给我一些明智的答案,我将不胜感激。 最美好的祝福
Christoph

需要了解,当您将
usercosts
数组推入chartData数组时,它不是
usercosts
的副本,而是对该数组的
引用

然后,稍后设置时:

 for(var p = 0; p < users.length; p++){
      usercosts[p]=0;
  } 
为了完整起见:好的,非常感谢:)。我将尝试找到另一种解决方案,您可以使用angular.copy()制作副本。但是要理解的重要部分是protypical继承在javascript中是如何工作的,尤其是在使用angular时,理解这一点非常重要
 for(var p = 0; p < users.length; p++){
      usercosts[p]=0;
  } 
var a = [1];
var b = a; // looks like it would be a simple copy 
alert( b[0] ); // alerts 1
// change value of b[0]
b[0] = 100;
alert( a[0]); // alerts 100 also because a and b are references to same array