2016-05-27 20 views
1

Ich habe ein teamDetails Array, innerhalb dessen ein Array ist, innerhalb dessen player Objekte sind. Jedes Spielerobjekt hat eine injured Eigenschaft, die den Wert "true" oder "false" enthält.Rückgabe von Objekten im Array mit 'True'-Parametern

Ich möchte eine Funktion schreiben, die das Array durchläuft und nur Spieler zurückgibt, deren verletzte Eigenschaft wahr ist. Diese

ist das, was ich bisher (nicht funktioniert):

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

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

    return injuredPlayers; 
} 

Ich kann nicht sehen, was mit diesem falsch ist. Wenn es jemand kann, wäre ich Ihnen dankbar.

+0

Haben Sie ein Beispiel für den tatsächlichen Daten haben? –

Antwort

0

Wenn die Iteration innerhalb eines array of array dies die richtige Umsetzung ist:

$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

Sie filter nutzen könnten Spieler zurückkehren, die verletzt sind:

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

versuchen, diese

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

Verwenden Sie das 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

Sie müssen keine Funktion schreiben. eckig ist für dich da.

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

Hier $ Filter ist Winkelfilter. Bringen Sie die Abhängigkeit in Ihren Controler oder Dienst, in dem Sie arbeiten.

Weitere Informationen über Winkelfilter siehe here

Hinweis: 2. stimmt für strenge Typprüfung. Er entspricht injured===true

EDIT

Für zeigt es auf Ansicht Winkel hat viel bessere Lösung direkt zu.

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

Für den Einsatz in Sicht keine Abhängigkeit Injektion oder Controller benötigen.

+0

Ok, das sieht nach dem aus, wonach ich suche. Also, wenn ich das in meinen Controller setze: '$ scope.injuredPlayers = $ filter ('filter') ($ scope.teamDetails.squad, {verletzt: true}, true);', und rufe dann '{{vailedPlayers }} Würde das meiner Meinung nach funktionieren? – Paulos3000

+0

Sie können es direkt in der Ansicht verwenden, wenn Sie nur in der Ansicht anzeigen müssen. Aktualisierung der Antwort –

0

Sie haben alles richtig gerade verlassen etwas

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

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

    return injuredPlayers; 
} 
Verwandte Themen