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;
}
});
}
});
});
我发出了两个 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;
}
});
}
});
});