按值合并两个数组

时间:2017-08-24 13:40:05

标签: javascript arrays matrix angularjs-directive

我对合并数组有一个特定的猜测:

我正在使用谷歌图表,我需要做这样的事情

Combo Chart enter image description here

要做那样的事我需要填写这个矩阵 enter image description here

我对轴x和轴y做得很好:

$scope.data= [];
            $scope.data[0]= ['Months'];

            angular.forEach($scope.consultors, function(consultor) {
                $scope.data[0].push(consultor.no_user);
            })

            angular.forEach(months, function(month) {
                $scope.data.push([month])
            })

enter image description here

但是,我的问题是当我尝试将$scope.relatorias放在$ scope.data中时。

这是$scope.relatorias,此变量按月包含每个顾问组的数据,如下所示:

enter image description here

如果你打开每个数组看起来像这样

enter image description here

我只需要推送ganancias_netas,但我的问题是当有一个空月,例如 anapaula 每个月都有数据,但 renato 没有。

我已尝试使用或为每个用户使用但是不起作用,我不是矩阵专家,这是我第一次使用它。

小提琴:http://fiddle.jshell.net/rfcabal/5ftw7c8d/

///更新///

我添加了第一个用0 $ scope.data填充的代码,然后在relatorios中搜索值并shoudl填充$ scope.data,但由于某种原因,jus填充了最后找到的值。

for (var i = 1; i < $scope.data.length; i++) {
                for (var a = 1; a < $scope.data[0].length; a++) {
                    $scope.data[i][a] = 0;
                    for (var b = 0; b < $scope.relatorios[a-1].length; b++) {
                        console.log(a-1+' '+b+' '+3);
                        console.log($scope.relatorios[a-1][b]['ganancias_netas'])
                        $scope.data[i][a] = $scope.relatorios[a-1][b]['ganancias_netas'];                   
                    }
                }
            }

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我刚用2解决了

首先,我用0

填充每个数据空间
for (var i = 1; i < $scope.data.length; i++) {
                for (var a = 1; a < $scope.data[0].length; a++) {
                    $scope.data[i][a] = 0;
                }
            }

i jus remplace其中fecha_emision等于每个数组的位置1。

for (var a = 0; a < $scope.relatorios.length; a++) {
                for (var b = 0; b < $scope.relatorios[a].length; b++) {
                    for (var i = 1; i < $scope.data.length; i++) {
                        var index = $scope.data[i].indexOf($scope.relatorios[a][b]['fecha_emision']);
                        if(index >= 0) {
                            $scope.data[i][a+1] = parseFloat($scope.relatorios[a][b]['ganancias_netas']);
                        }
                    }
                }                                       
            }