2016-04-05 15 views
0

別のオブジェクトのリストを含むオブジェクトのリストを調べようとしています。オブジェクト内のオブジェクトのリストを反復する

以下に掲載された画像には、オブジェクトがどのように見えるか、そしてforEachの動作が表示されます。

マイコード:

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); 
      }) 
     }) 

    }); 
} 

出力: This is how to object looks like and the console after running

私がやろうとしている何がallMsrに含まれる各オブジェクトでkeyvalフィールドを使用することです。

+0

'project.allMsr'を反復しようとしていますが、' project'変数が定義されていません。外側ループ 'allMsr'に現在のプロジェクトの名前を付けました。 –

+0

@ JB Nizet。それは私の悪いこと、それがそのように働いているかどうかを試してみました。私が削除したときにもそれは動作していません。 –

答えて

0

読むthe documentationangular.forEach()に渡された関数の引数は、valuekey、ないkeyvalueです。

これは、オブジェクトのキー/値のペアを反復処理するときに使用する構文です。しかし、allMsrはオブジェクトではなく、配列です。それでは、あなたが欲しいのは=は、代入演算子、いない比較演算子であることを

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

ノートのようなものです。

+0

実際に私は 'allMsr'から必要なフィールドであるため、' val'と 'key'を使用しています。 –

+0

したがって、allMsrは配列であり、オブジェクトではありません。この配列の各要素は、valとkeyという2つのフィールドを持つオブジェクトです。 –

+0

'allMsr'配列のオブジェクトは2つ以上のフィールドを持っています。しかし、「val」と「key」は必要なものです。 –

関連する問題