如何合并JSON对象在一起



我想制作一个条形图,我有两个函数,每个函数都返回数据,例如:第一个函数1、:

$scope.data = {
    labels: ['Jan', 'Feb', 'Mar'],
    datasets: [
        {
            label: 'My First dataset',
            fillColor: 'rgba(220,220,220,0.2)',
            strokeColor: 'rgba(220,220,220,1)',
            pointColor: 'rgba(220,220,220,1)',
            pointStrokeColor: '#fff',
            pointHighlightFill: '#fff',
            pointHighlightStroke: 'rgba(220,220,220,1)',
            data: [55, 40, 84]
        }
    ]
};

第二个返回函数:

$scope.data = {
    labels: ['Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
    datasets: [
        {
            label: 'My Second dataset',
            fillColor: 'rgba(151,187,205,0.2)',
            strokeColor: 'rgba(151,187,205,1)',
            pointColor: 'rgba(151,187,205,1)',
            pointStrokeColor: '#fff',
            pointHighlightFill: '#fff',
            pointHighlightStroke: 'rgba(151,187,205,1)',
            data: [28, 48, 40, 19, 86, 27, 90, 102, 123]
        }
    ]
};

我的问题是如何将这个结果结合起来得到这个最终结果:

 $scope.data = {
    labels: ['Jan', 'Feb', 'Mar','Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
    datasets: [
      {
            label: 'My Second dataset',
            fillColor: 'rgba(151,187,205,0.2)',
            strokeColor: 'rgba(151,187,205,1)',
            pointColor: 'rgba(151,187,205,1)',
            pointStrokeColor: '#fff',
            pointHighlightFill: '#fff',
            pointHighlightStroke: 'rgba(151,187,205,1)',
            data: [28, 48, 40, 19, 86, 27, 90, 102, 123]
        },
        {
            label: 'My Second dataset',
            fillColor: 'rgba(151,187,205,0.2)',
            strokeColor: 'rgba(151,187,205,1)',
            pointColor: 'rgba(151,187,205,1)',
            pointStrokeColor: '#fff',
            pointHighlightFill: '#fff',
            pointHighlightStroke: 'rgba(151,187,205,1)',
            data: [28, 48, 40, 19, 86, 27, 90, 102, 123]
        }
    ]
};

使用concat方法

 var finalObj = data1.concat(data2);

您可以轻松地这样做:

$scope.data.labels = $scope.data1.labels.concat($scope.data2.labels);
$scope.data.datasets = $scope.data1.datasets.concat($scope.data2.datasets);

在您的情况下可能(假设因为您没有包含函数):

$scope.data = { labels: [], datasets: [] };
getFirstDataSet(function(response) {
    concatToData(response);
});
getSecondDataSet(function(response) {
    concatToData(response);
});
function concatToData(response) {
    $scope.data.labels = $scope.data.labels.concat(response.labels);
    $scope.data.datasets = $scope.data.datasets.concat(response.datasets);
}

你可以这样做;

$scope.data1.datasets.push($scope.data2.datasets[0]);

我建议不要为不同的函数绑定到同一个数组

最新更新