2016-05-27 8 views
1

私はteamDetailsの配列を持っていて、その中にsquadの配列があり、その中にplayerのオブジェクトがあります。各プレーヤーオブジェクトには、"true"または"false"の値を含むinjuredプロパティがあります。'true'のパラメータを持つ配列のオブジェクトを返す

私は負傷プロパティが真と評価されたプレイヤーだけを返す配列をループする関数を記述したいと思います。

これは私がこれまでのところ(動作していない)したものである:

$scope.injuredPlayerSearch = function() { 
    var injuredPlayers = []; 

    $scope.teamDetails.squad.forEach(function(o) { 
     if (o[injured] === true) { 
     injuredPlayers.push(o) 
     } 
    }); 

    return injuredPlayers; 
} 

私はこれで間違っているものを見ることができません。誰でもできる場合、いくつかの助けを感謝します。

+0

左ましたか? –

答えて

0

反復がarray of array内にある場合、これは正しい実装である:

$scope.injuredPlayerSearch = function() { 
    var injuredPlayers = []; 

    $scope.teamDetails.forEach(function(t){ 
    t.squad.forEach(function(o) { 
     if (o[injured] === true) { 
     injuredPlayers.push(o) 
     } 
    }); 
    }); 

    return injuredPlayers; 
} 
0

あなたが負傷している選手を返すためにfilterを使用することができます。

$scope.injuredPlayerSearch = function() { 
    return $scope.teamDetails.squad.filter(function(o) { 
     return o[injured]; 
    }); 
} 
0

この

var injuredPlayers = []; 
    angular.forEach($scope.teamDetails.squad,function(s){ 
    if (s.injured === true) { 
     injuredPlayers.push(s) 
    } 
    }) 
return injuredPlayers; 
0
を試してみてください

JavaScriptを使用するfilter

var players = [{ id : 0 , injured : true}, 
       { id : 1 , injured : false}, 
       { id : 2 , injured : false}, 
       { id : 3 , injured : true}, 
       { id : 4 , injured : true}]; 

    var injuredPlayers = players.filter(filterByInjured) 

    function filterByInjured(player) { 
     if ('injured' in player && typeof(player.injured) === 'boolean' && player.injured === true) { 
      return true; 
     } 
    } 

    console.log(injuredPlayers); 
1

機能を記述する必要はありません。あなたには角度があります。

var injuredPlayers = $filter('filter')($scope.teamDetails.squad, {injured:true}, true); 

ここで、$ filterは角度フィルタです。あなたが使用している制御装置またはサービスに依存性注入を行います。角度フィルタの詳細について

here

参照:第2真のは、厳密な型チェックのためのものです。それは、ビューの角度に直接にそれを示すためにinjured===true

EDIT

と等価である多くのよりよい解決策を持っています。

{{teamDetails.squad | filter:{injured:true}:true}} 

ビューで使用するために、依存性注入またはコントローラは必要ありません。

+0

それは私が何をしているかのように見えます。これを私のコントローラに入れたら、$ scope.injuredPlayers = $ filter( 'filter')($ scope.teamDetails.squad、{injured:true}、true); 'を呼び出し、' {{injuredPlayers }} '私の見解では、それはうまくいくのでしょうか? – Paulos3000

+0

ビューでのみ表示する必要がある場合は、ビューで直接使用できます。答えを更新する。 –

0

あなたは、実際のデータの例を持っていますかあなたが正しいすべてがちょうど何か

$scope.injuredPlayerSearch = function() { 
    var injuredPlayers = []; 

    angular.forEach($scope.teamDetails.squad,function(o) { 
      if (o[injured] === true) { 
       injuredPlayers.push(o) 
      } 
    }); 

    return injuredPlayers; 
} 
関連する問題