2016-06-23 4 views
0

アレイネストされた配列内の特定のキーの値ごとに合計金額を取得

[ 
    { 
     id: 1, 
     title: "Test 1", 
     eventTypeId: 2, 
     eventType: { 
      id: 2, 
      name: "Event X", 
      category: { 
       id: 1, 
       name: "Study 1" 
      } 
     } 
    }, 
    { 
     id: 2, 
     title: "Test 2", 
     eventTypeId: 2, 
     eventType: { 
      id: 2, 
      name: "Event Y", 
      category: { 
       id: 1, 
       name: "Study 2" 
      } 
     } 
    }, 
    { 
     id: 3, 
     title: "Test 3", 
     eventTypeId: 2,  
     eventType: { 
      id: 2, 
      name: "Event Z", 
      category: { 
       id: 2, 
       name: "Study 1" 
      } 
     } 
    } 
]; 

データがAPIリクエストから来て、成功functionの内側に、私は以下のように$scope.initialDataLengthへの応答を帰属しています:

var getDataLength = function() { 
    $http.get(urlData).success(function (data) { 
     $scope.initialDataLength = data; 
    } 
} 

ビュー

<td class="col-md-2"> 
    {{ initialDataLength.length }} 
</td> 

Categoryオブジェクトのnameの長さを取得したいとします。

私が何かしようとしていた:

angular.forEach (data, function (typeId) { 
    var type = typeId.eventType; 
    angular.forEach (type, function (category) { 
     var cat = category.name; 
     console.log("cat", cat.length) 
    }) 
}); 

をしかし、それは私に次のエラーを示しています。私のミスがどこにある

Cannot read property 'length' of undefined

誰でも、私に説明してもらえますか?

答えて

2

forEach()は必要ありません。既にオブジェクト参照があり、そのオブジェクトのプロパティにアクセスするだけです。

angular.forEach (data, function (typeId) { 

    console.log(typeId.eventType.category.name) 

}); 
+0

ああ、うーん、たくさんありがとう! – Anton

+0

@Antonもし私があなただったら、 'category!== undefined'かどうかを検証するか、カテゴリが空のオブジェクトである場合に問題が発生するでしょう。ちょっとした提案.. – developer033

+0

@ developer033ありがとう、それは良い通知です – Anton

関連する問題