2016-05-26 6 views
1

Ich habe eine Reihe von Spielern, jeder Spieler ist ein Objekt, das eine Reihe von Eigenschaften hat, einer ist "Tore".Elemente aus einem Array basierend auf Eigenschaftswerten abrufen (AngularJS)

var players = [ 
     { 
      "id":"4634", 
      "name":"A. Turan", 
      "number":"0", 
      "age":"28", 
      "position":"M", 
      "goals":"1" 
     }, 
     { 
      "id":"155410", 
      "name":"H. Çalhano?lu", 
      "number":"0", 
      "age":"21", 
      "position":"A", 
      "goals":"0" 
     }, 
     { 
      "id":"4788", 
      "name":"B. Y?lmaz", 
      "number":"0", 
      "age":"30", 
      "position":"A", 
      "goals":"2", 
     } 
    ] 

Ich habe eine Funktion, um durch das Array geschrieben und jedes Element drücken, das mehr als ‚0‘ Ziele zu einem Array hat, topScorers. Wie so:

$scope.topScorerSearch = function() { 
    var topScorers = []; 
    $scope.teamDetails.squad.forEach(function(o) { 
     if (o.goals > 0) { 
     topScorers.push(o) 
     } 
    }); 
    return topScorers; 
} 

Mit der Funktion als {{topScorerSearch()}} genannt.

Dies gibt nur Spieler zurück, die ein Tor erzielt haben. Perfekt.

Allerdings, ich möchte dies auf andere Eigenschaften ausführen, die in viel Wiederholungscode führen wird. Wie kann ich dies zu einer allgemeinen Funktion machen, die auf verschiedenen Eigenschaften ausgeführt werden kann?

Ich habe versucht, einschließlich der 'Stütze' Parameter, aber es hat nicht funktioniert:

$scope.topScorerSearch = function(prop) { 
    var topScorers = []; 
    $scope.teamDetails.squad.forEach(function(o) { 
     if (o.prop > 0) { 
     topScorers.push(o) 
     } 
    }); 
    return topScorers; 
} 

... und rief die Funktion wie folgt aus:

{{topScorerSearch(goals)}} 

Warum funktioniert diese Arbeit ? Wo gehe ich falsch?

+0

Sie sollten die Antwort akzeptieren, die das Problem löst, damit andere sehen können, wie es gelöst wird (auch @Sidriel bekommt ihre Punkte). – shaunhusain

+0

Ich wollte ... Es war nur 3 Minuten her, gib mir eine Sekunde :) – Paulos3000

+1

Geduld ist nicht mein Ding;) – shaunhusain

Antwort

2

Ich glaube, das Problem ist, dass prop wird nicht zu goals auflösen, weil goals als eine Variable mit einem Null oder undefined Wert behandelt wird, wodurch prop null oder undefined.

Wenn Sie die alternative Methode zum Zugriff auf Objekteigenschaften object["property"] verwenden und die Funktion {{topScorers("goals")}} verwenden, sollte es funktionieren.

+0

Versuchte es, und keine Freude. Zuerst habe ich die Punktnotation in eckige Klammern gesetzt, und das hat gut funktioniert, aber dann habe ich erneut versucht, den Parameter auf die Funktion anzuwenden, und das Argument für den Aufruf, und nichts ... – Paulos3000

+0

Sorry ... mein Fehler. Ich hatte die eckigen Klammern auf den Ausdruck und die Funktion angewendet, aber die Eigenschaft nicht in den Funktionsaufruf eingefügt. D'oh. Danke für Ihre Hilfe. – Paulos3000