angularjs 1.2 - 将 json obj 合并到另一个 json obj

angularjs 1.2 - merge json obj to another json obj

我发出了两个 HTTP 请求,我必须将第二个 HTTP 调用的响应合并到第一个响应 注意:第二个响应包含每个 individualID 的数据。所以我尝试使用 angular.forEach 函数追加..我做错了

第一个 HTTP 请求的响应存储在 $scope.bobData ================================================ =

$scope.bobData =   {
        "count": 1,
        "listOfIndividuals": [{
            "individualId": "1234",
            "firstName": "UAT Michael",
            "lastName": "Brady",
            "address1": "4950 Alhambra Valley Rd",
            "premium": "886.48",
            "pageNumber": 0,
            "sortBy": null,
            "sortOrder": null,      
        },
    {
            "individualId": "1235",
            "firstName": "Mike",
            "lastName": "Randy",
            "address1": "1300 Mission Valley Rd",
            "premium": "990.00",
            "pageNumber": 0,
            "sortBy": null,
            "sortOrder": null,      
        }
    ]
        }

第二个 HTTP 请求的响应存储在 $scope.individualPlanData

$scope.individualPlanData=     {
            "individualPlanDetails": {
                "1234": {
                    "planId": "p01",
                    "noOfEnrollees": 0,
                    "officeVisit": null,
                    "genericDrugs": null,
                    "deductible": null,
                    "issuerLogo": null,
                    "issuerName": null,
                    "planName": null,
                    "planType": null
                },
        "1235": {
                    "planId": "p01",
                    "noOfEnrollees": 0,
                    "officeVisit": null,
                    "genericDrugs": null,
                    "deductible": null,
                    "issuerLogo": null,
                    "issuerName": null,
                    "planName": null,
                    "planType": null
                }
            }
        }
CODE SNIPPET::


angular.forEach(vm.bobData, function(obj) { 
                angular.forEach(vm.individualPlanData.individualPlanDetails[key], function (value, key) {
                    obj.officeVisit: value.officeVisit,
                    obj.genericDrugs: value.genericDrugs,
                    obj.deductible: value.deductible,
                    obj.issuerLogo: value.issuerLogo,
                    obj.issuerName: value.issuerName,
                    obj.planName: value.planName,
                    obj.planType: value.planType
                })
            });

预期结果:

$scope.bobData =   {
        "count": 1,
        "listOfIndividuals": [{
            "individualId": "1234",
            "firstName": "UAT Michael",
            "lastName": "Brady",
            "address1": "4950 Alhambra Valley Rd",
            "premium": "886.48",
            "pageNumber": 0,
            "sortBy": null,
            "sortOrder": null,
            "1234": {
                    "planId": "p01",
                    "noOfEnrollees": 0,
                    "officeVisit": null,
                    "genericDrugs": null,
                    "deductible": null,
                    "issuerLogo": null,
                    "issuerName": null,
                    "planName": null,
                    "planType": null
                },
              },
             {
            "individualId": "1235",
            "firstName": "Mike",
            "lastName": "Randy",
            "address1": "1300 Mission Valley Rd",
            "premium": "990.00",
            "pageNumber": 0,
            "sortBy": null,
            "sortOrder": null,
            "1235": {
                    "planId": "p01",
                    "noOfEnrollees": 0,
                    "officeVisit": null,
                    "genericDrugs": null,
                    "deductible": null,
                    "issuerLogo": null,
                    "issuerName": null,
                    "planName": null,
                    "planType": null
                }
            }

        }
    ]

}

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="customersCtrl"> 

<ul>
  <li>
    {{myData}}
  </li>
</ul>
</div>

<script>
var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope, $http) {
   $scope.myData = {
        "count": 1,
        "listOfIndividuals": [{
            "individualId": "1234",
            "firstName": "UAT Michael",
            "lastName": "Brady",
            "address1": "4950 Alhambra Valley Rd",
            "premium": "886.48",
            "pageNumber": 0,
            "sortBy": null,
            "sortOrder": null,      
        },
    {
            "individualId": "1235",
            "firstName": "Mike",
            "lastName": "Randy",
            "address1": "1300 Mission Valley Rd",
            "premium": "990.00",
            "pageNumber": 0,
            "sortBy": null,
            "sortOrder": null,      
        }
    ]
        }
        
   var individualPlanData=     {
            "individualPlanDetails": {
                "1234": {
                    "planId": "p01",
                    "noOfEnrollees": 0,
                    "officeVisit": null,
                    "genericDrugs": null,
                    "deductible": null,
                    "issuerLogo": null,
                    "issuerName": null,
                    "planName": null,
                    "planType": null
                },
        "1235": {
                    "planId": "p01",
                    "noOfEnrollees": 0,
                    "officeVisit": null,
                    "genericDrugs": null,
                    "deductible": null,
                    "issuerLogo": null,
                    "issuerName": null,
                    "planName": null,
                    "planType": null
                }
            }
        }
        
        angular.extend($scope.myData, individualPlanData);
 
});
</script>

</body>
</html>

For Angular 1.2: 尝试 angular.extend(dst, src);

点击此处查看详细说明angular.extend

angular.forEach(bobData.listOfIndividuals, function(response1Value, response1Key) { 
                        angular.forEach(response1Value, function(listOfIndividualsValue, listOfIndividualsKey){
                            if(listOfIndividualsKey === "individualId") {
                                angular.forEach(individualPlanData.individualPlanDetails, function(response2Value, response2Key){
                                    if (listOfIndividualsValue === response2Key) {
                                        response1Value.planType = response2Value.planType;
                                        response1Value.officeVisit = response2Value.officeVisit;


                                    }
                                });
                            }
                        });
                    });