2017-07-22 12 views
0

私はJavaScriptの変数を使用しているので、何が起こっているのかを見ることができます。角度拡張関数が2つのjsonオブジェクトを結合しないのはなぜですか

最初の2つの変数はそれぞれのオブジェクトをうまく表示しますが、3つ目の変数はangle.extendを使用して2つの異なるデータベースから取得した2つのjsonオブジェクトを結合しています。 1つはローカルDBで、もう1つはプロダクションDBからのものです。

2つのjsonの間の共通IDは、私はJSON 1

を "マージ" しようとしているものです:

[{"ID": 1, "TITLE": "CSR", "PHONE": "555-555-1212", "FNAME": "JOHN", "LNAME": "SMITH"}] 

JSON 2:

[{"ID": 1, "GROUP_MEMBER_ID": "1","GROUP_MEMBER_TYPE_ID":"4","GROUP_ID":"1"}] 

私が望む結果見る:

[{"ID": 1, "GROUP_MEMBER_ID": "1","GROUP_MEMBER_TYPE_ID":"4","GROUP_ID":"1", "TITLE": "CSR", "PHONE": "555-555-1212", "FNAME": "JOHN", "LNAME": "SMITH"}] 

私はangular.extendを無駄にしようとしています:

// local json objects to view result sets 
var mLocalJson = {}; 
var mProdJson = {}; 
var mCombinedJson = {}; 

var teamApp = angular.module('teamApp', []) 

teamApp.controller('mainController', function($scope, $http) { 
$scope.documentsLocal = []; 
$scope.documentsProd = []; 
$scope.documentsCombined = []; 


$scope.loadDataLocal = function() { 
    $http.post("php/getTeamsLocal.php") 
     .then(function(resultLocal) { 
      $scope.documentsLocal = resultLocal.data; 
      mLocalJson = resultLocal.data; 
     }); 
}; 

$scope.loadDataProd = function() { 
    $http.post("php/getTeamsProd.php") 
     .then(function(resultProd) { 
      $scope.documentsProd = resultProd.data; 
      mProdJson = resultProd.data; 
     }); 
}; 

$scope.loadDataCombined = function(){ 
    mCombinedJson = angular.extend($scope.documentsCombined, $scope.documentsProd, $scope.documentsLocal); 
}; 
}); 

私はforループを試しました。私は次のことを試してみました:

$scope.loadDataCombined = function(){ 
    mCombinedJson = angular.extend($scope.documentsCombined, mProdJson, mLocalJson); 
}; 

は、どんなに私が試したものmCombinedJsonは、APIは、JavaScriptのオブジェクトを返すされていない

+0

あなたは 'mProdJson'または' mLocalJson'どちらが空またはnullですか? –

答えて

0

NULLではありません。 1つのJavaScriptオブジェクトの内容を含むJavaScript配列を返しています。

angle.extendを使用して、配列内のオブジェクトを結合します。

var array1 = [{"ID": 1, "TITLE": "CSR", "PHONE": "555-555-1212", "FNAME": "JOHN", "LNAME": "SMITH"}]; 
 
var array2 = [{"ID": 1, "GROUP_MEMBER_ID": "1","GROUP_MEMBER_TYPE_ID":"4","GROUP_ID":"1"}]; 
 

 
var combinedArray = [angular.extend(array1[0],array2[0])]; 
 

 
console.log(combinedArray);
<script src="//unpkg.com/angular/angular.js"></script>

+0

ありがとうございます。あなたのコードは動作しますが、 "mCombinedJson"はまだ空です – kronus

+0

[JavaScript配列: '[]'と '{}'の違いを参照してください(https://davidwalsh.name/javascript-arrays-brackets-braces) – georgeawg

0

私は私の問題を解決するために、ループを使用:

$scope.loadDataProd = function() { 
    $http.post("php/getTeamsProd.php") 
     .then(function(resultProd) { 
      $scope.documentsProd = resultProd.data; 
      mProdJson = resultProd.data; 
      for (var i = 0; i < mLocalJson.length; i++) { 
       for (var j = 0; j < mProdJson.length; j++) { 
        if (mLocalJson[i].TEAM_ID == mProdJson[j].TEAMM_ID) { 
         mCombinedJson.push([{ 
          "TEAM_GROUP_ID": $scope.documentsLocal[i].TEAM_GROUP_ID, 
          "TEAM_GROUP_MEMBER_ID": $scope.documentsLocal[i].TEAM_GROUP_MEMBER_ID, 
          "TEAM_GROUP_DESC": $scope.documentsLocal[i].TEAM_GROUP_DESC, 
          "TEAM_GROUP_MEMBER_TYPE_DESC": $scope.documentsLocal[i].TEAM_GROUP_MEMBER_TYPE_DESC, 
          "TEAM_ID": $scope.documentsProd[j].TEAMM_ID, 
          "TEAMM_DESC": $scope.documentsProd[j].TEAMM_DESC, 
          "TEAMM_EMAIL": $scope.documentsProd[j].TEAMM_EMAIL, 
          "TEAMM_EXTENSION": $scope.documentsProd[j].TEAMM_EXTENSION, 
          "TEAMM_EZLYNX_USERNAME": $scope.documentsProd[j].TEAMM_EZLYNX_USERNAME, 
          "TEAMM_FAX": $scope.documentsProd[j].TEAMM_FAX, 
          "TEAMM_NAME": $scope.documentsProd[j].TEAMM_NAME, 
          "TEAMM_PHONE": $scope.documentsProd[j].TEAMM_PHONE, 
          "TEAMM_QUEUE": $scope.documentsProd[j].TEAMM_QUEUE, 
          "TEAMM_QUEUE_GROUP": $scope.documentsProd[j].TEAMM_QUEUE_GROUP, 
          "TEAMM_QUEUE_KILLED": $scope.documentsProd[j].TEAMM_QUEUE_KILLED, 
          "TEAMM_QUEUE_SENT": $scope.documentsProd[j].TEAMM_QUEUE_SENT, 
          "TEAMM_TYPE": $scope.documentsProd[j].TEAMM_TYPE 
         }]); 
        } 
       } 
      } 
     }); 
}; 

$scope.loadDataCombined = function(){ 
    setTimeout(function(){ 

     for (var i = 0; i < mLocalJson.length; i++) { 
      for (var j = 0; j < mProdJson.length; j++) { 
       if (mLocalJson[i].TEAM_ID == mProdJson[j].TEAMM_ID) { 
        mCombinedJson.push([{ 
          "TEAM_GROUP_ID": mLocalJson[i].TEAM_GROUP_ID, // 1 - 7 
          "TEAM_GROUP_MEMBER_ID": mLocalJson[i].TEAM_GROUP_MEMBER_ID, 
          "TEAM_GROUP_DESC": mLocalJson[i].TEAM_GROUP_DESC, // Cereal Killers, Guns n Closes, etc... 
          "TEAM_GROUP_MEMBER_TYPE_DESC": $scope.documentsLocal[i].TEAM_GROUP_MEMBER_TYPE_DESC, // Director, Manager, Assistant Manager, Producer 
          "TEAM_ID": mProdJson[j].TEAMM_ID, 
          "TEAMM_DESC": mProdJson[j].TEAMM_DESC, 
          "TEAMM_EMAIL": mProdJson[j].TEAMM_EMAIL, 
          "TEAMM_EXTENSION": mProdJson[j].TEAMM_EXTENSION, 
          "TEAMM_EZLYNX_USERNAME": mProdJson[j].TEAMM_EZLYNX_USERNAME, 
          "TEAMM_FAX": mProdJson[j].TEAMM_FAX, 
          "TEAMM_NAME": mProdJson[j].TEAMM_NAME, 
          "TEAMM_PHONE": mProdJson[j].TEAMM_PHONE, 
          "TEAMM_QUEUE": mProdJson[j].TEAMM_QUEUE, 
          "TEAMM_QUEUE_GROUP": mProdJson[j].TEAMM_QUEUE_GROUP, 
          "TEAMM_QUEUE_KILLED": mProdJson[j].TEAMM_QUEUE_KILLED, 
          "TEAMM_QUEUE_SENT": mProdJson[j].TEAMM_QUEUE_SENT, 
          "TEAMM_TYPE": mProdJson[j].TEAMM_TYPE 
         }]); 
       } 
      } 
     } 

    }, 300); 
    $scope.lDc(); 
}; 

$scope.lDc = function(){ 
    $scope.documentsCombined = mCombinedJson; 
}; 
関連する問題