2017-06-22 9 views
0

Wie zwei Arrays zu vergleichen, die in verschiedenen Funktionen sind?

var app2 = angular.module("webApp2", []) 
 
    .controller("webCtrl2", function ($scope, $window, $state, $http) { 
 
     console.log("hi " + $state.params.usermail); 
 
     $scope.uName = $state.params.usermail; 
 
     $scope.useriden = $state.params.user; 
 

 
     console.log("hbdhakkdjf" + " " + $scope.uName) 
 
     //$scope.data = $window.sessionStorage.getItem("Mydata"); 
 
     //console.log("data "+$scope.data); 
 
     var usersList = []; 
 
     var frndsAdded = []; 
 

 
     $http.get("http://192.168.2.3:3000/userslist") 
 
      .then(function (response) { 
 
       usersList = response.data; 
 
       //$scope.friendsList = response.data; 
 
       //................................................................. 
 
       $http.get("http://192.168.2.3:3000/sendfriendrequests/" + $scope.uName) 
 
        .then(function (response) { 
 
          frndsAdded = response.data; 
 
         }, 
 
         function (response) { 
 
          console.log("error"); 
 
         }); 
 
       // console.log("array print" + JSON.stringify($scope.usersList)); 
 
      }, function (response) { 
 
       console.log("response"); 
 
      }); 
 
     console.log(frndsAdded); 
 
     console.log("print userid" + $scope.useriden); 
 
     $scope.addFrnd = function (frnd, index) { 
 
      var data = { 
 
       "userId": $scope.useriden, 
 
       "requestname": frnd, 
 
       "username": $scope.uName 
 
      }; 
 
      console.log(data); 
 
      var req = { 
 
       method: 'POST', 
 
       url: 'http://192.168.2.3:3000/friendrequests', 
 
       data: data 
 
      } 
 
      $http(req).then(function (response) { 
 
       console.log("hjhuhjh" + JSON.stringify(response.data)); 
 
       $scope.usersList.splice("index"); 
 
      }, function (response) { 
 
       console.log(JSON.stringify(response)); 
 
      }); 
 
     } 
 
     $scope.logoutFn = function() { 
 
      $state.go("signup"); 
 
     } 
 

 
    });
<nav class="navbar navbar-default well well-sm"> 
 
    <div class="container-fluid"> 
 
     <div class="navbar-header"> 
 
      <a class="navbar-brand" href="#">WebChat</a> 
 
     </div> 
 
     <ul class="nav navbar-nav pull-right"> 
 
      <li><a href="#">Home</a></li> 
 
      <li style = margin-top:5%> 
 
       <div class = "dropdown"> 
 
        <a href="#" data-toggle="dropdown"> 
 
         <i class="glyphicon glyphicon-user"></i>Add Friends<span class = "caret"></span> 
 
        </a> 
 
       <ul class = "dropdown-menu list-group" style = " overflow: scroll"> 
 
        <!--<li class = "list-group-item" ng-repeat = "seeFrnd in usersList track by $index" ng-bind = "seeFrnd.username">name 
 
         <button class = "btn btn-primary" ng-click = "addFrnd()">Add Friend</button> 
 
        </li>--> 
 
        <li class = "list-group-item" ng-repeat = "seeFrnd in usersList track by $index"><span ng-bind="seeFrnd.username"></span> 
 
         <button class = "btn btn-primary btn-sm" ng-click = "addFrnd(seeFrnd.username,$index)" class = "buttn" style="float: right">Add Friend</button> 
 
        </li> 
 
       </ul> 
 
       </div> 
 
      </li> 
 
      
 
      <li> 
 
       <a href="#" ng-bind="uName"></a> 
 
      </li> 
 
      <li><a href="#" ng-click="logoutFn()">Logout</a></li> 
 

 
     </ul> 
 
     
 
    </div> 
 
</nav> 
 
<div ui-view></div>

ich hier Chat-Anwendung, mache ich erhalte zwei arrays.one ist für die Benutzer-Liste und andere für Freunde list.both Arrays sind in verschiedenen functions.I dass beide Arrays vergleichen müssen. Wie könnte ich das tun?

+0

wenn Sie speichern sowohl das Array in den Geltungsbereich von Variablen $, dann können Sie darauf zugreifen, wo jeder in diesem Controller –

+0

ich keine Array mit dem gleichen friends sehen können. Es gibt einen, aber Sie haben das kommentiert. Wäre toll, wenn Sie hier einige klare Code einfügen können –

+0

Ich habe usersList und frndsAdded Arrays –

Antwort

0
angular.forEach(arr1, function(value1, key1) { 
     angular.forEach(arr2, function(value2, key2) { 
      //Comparison logic 
     }); 
    }); 
+0

genommen aber arr1 und arr2 sind nicht im selben Umfang –

+0

sind sie in verschiedenen Controller –

+0

Nun, schauen Sie sich OP Code :) –

0

Definieren Sie die beiden Arrays in $ scope. Sie müssen Ihre Logik verwenden, um zwei Arrays innerhalb des zweiten API-Aufrufs zu vergleichen, nachdem Sie die zweiten Array-Werte abgerufen haben. Wenn Sie es außerhalb ausführen möchten, müssen Sie warten, bis der asynchrone API-Aufruf abgeschlossen ist, sodass Sie das vollständige Array erhalten.

$scope.usersList = []; 
    $sccope.frndsAdded = []; 
    $http.get("http://192.168.2.3:3000/userslist").then(function(response) { 
     $scope.usersList = response.data; 
     //$scope.friendsList = response.data; 
     //................................................................. 
     $http.get("http://192.168.2.3:3000/sendfriendrequests/" + $scope.uName).then(function(response) { 
      $scope.frndsAdded = response.data; 
      //Comaprison Logic 
      for (var i = 0; i < $scope.usersList.length; i++) { 
       for (var j = 0; j < $scope.frndsAdded.length; j++) { 
        if ($scope.usersList[i].request == $scope.frndsAdded[j].request) 
        //ur logic 
       } 
      } 
     }, function(response) { 
      console.log("error"); 
     }); 
     // console.log("array print" + JSON.stringify($scope.usersList)); 
    }, function(response) { 
     console.log("response"); 
    }); 
Verwandte Themen