如何在AngularJS中将两个或多个JSON对象合并为一个?

时间:2018-02-10 08:52:30

标签: javascript angularjs json api

是否可以在AngularJS中的API JSON响应中添加新数据?我正在使用REST API来返回国家/地区详细信息,但我想向其添加更多详细信息。

在API调用之后,我收到了这样的回复: enter image description here

空字段很少(红色箭头)。我需要使用另一个API填写每个国家/地区,并在可能的情况下添加新的密钥,例如“id”等。

enter image description here

有可能实现这一目标吗?怎么样?

以下是代码:

Api service.js(将要添加的数据)

$http.get("https://api.../getfile/rohit/fw18countries").success(function(data) {
    teams = data.teams;
    //console.log(data);
    /* shuffle(teams); */
});

return {
    GetTeams: function(){
        return teams;
    },
    get: function(teamId) {
        for (var i = 0; i < teams.length; i++) {
            if (teams[i].id === parseInt(teamId)) {
                return teams[i];
            }
        }
        return null;
    }
}

Controller.js

/* all teams data */
$scope.Allteams = wcAPI.GetTeams(); 

/* REST API call */
$http.get("http://api.../v1/competitions/467/fixtures")
  .then(function(data) {
      $scope.country = data;
      console.log($scope.country);
  });

现在,我需要使用$scope.country(我的静态数据)更新$scope.Allteams(REST API数据),其中包含上述相应字段。需要分别合并它们。

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码尝试此操作。循环遍历数据阵列并找到正确的数据。然后将所有值添加到对象。

 for(var i = 0; i< $scope.country.length; i++) {
    //Find the right index from $scope.country
    for(var j = 0; j< $scope.Allteams.length; j++) {
        // TODO here you have to campare by right value
        if($scope.country[i].id == $scope.Allteams[j].teamId) {
            for(var key in $scope.AllTeams[j]) {

                if(!$scope.Allteams[j].hasOwnProperty(key)) continue;

                //Adds the value to the object
                $scope.country[i][key] = $scope.Allteams[j][key];
            }
            break;
        }
    }
}