2016-04-05 9 views
0

Ich versuche, eine Liste von Objekten durchzugehen, die eine andere Liste von Objekten enthalten.Iterieren einer Objektliste im Objekt

In dem Bild unten sehen Sie, wie ein Objekt aussieht und wie sich das forEach verhält.

Mein Code:

myApp.controller('Hello', [ '$scope', '$http', function($scope, $http) { 
    $http.get('http://localhost:8080/projects').success(function(data) { 
     $scope.projects = data; 
     angular.forEach($scope.projects,function(allMsr){ 
      console.log(allMsr); 
      angular.forEach(allMsr, function(key,val){ 
       console.log("Got into the 2nd for"); 
       if(key = "files") 
        console.log(val+" "+key); 
      }) 
     }) 

    }); 
} 

Der Ausgang: This is how to object looks like and the console after running

Was ich versuche zu tun, um die key und val Felder in jedem Objekt durch allMsr enthalten verwenden.

+0

Sie versuchen, auf "project.allMsr" zu iterieren, aber es ist keine solche 'Projekt'-Variable definiert. Sie haben das aktuelle Projekt in der äußeren Schleife 'allMsr' benannt. –

+0

@JB Nizet. Das ist mein Fehler, ich habe versucht zu sehen, ob es so funktioniert. Wenn ich lösche, funktioniert das auch nicht. –

Antwort

0

lesen the documentation: die Argumente der Funktion zu angular.forEach() bestanden sind value und key, nicht key und value.

Und das ist die Syntax, die beim Iterieren über die Schlüssel/Wert-Paare eines Objekts verwendet wird. Aber allMsr ist kein Objekt, es ist ein Array. Also, was Sie wollen, ist so etwas wie

angular.forEach(allMsr, function(obj) { 
    console.log("Got into the 2nd for"); 
    if (obj.key === "files") { 
     console.log(obj.val + " " + obj.key); 
    } 
}); 

Beachten Sie, dass = ist ein Zuweisungsoperator, kein Vergleichsoperator.

+0

Eigentlich verwende ich 'val' und' key', weil das die Felder sind, die ich von 'allMsr' benötige. –

+0

So ist allMsr ein Array und kein Objekt, rechts, und jedes Element dieses Arrays ist ein Objekt mit zwei Feldern namens val und key, richtig? –

+0

Die Objekte im Array 'allMsr' haben mehr als zwei Felder. Aber "val" und "key" sind diejenigen, die ich brauche. –

Verwandte Themen