2016-05-26 1 views
1

У меня есть массив игроков, каждый игрок - это объект, который имеет несколько свойств, один - «цели».Получение элементов из массива на основе значений свойств (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", 
     } 
    ] 

Я написал функцию, чтобы перебрать массив и нажмите каждый элемент, который имеет более чем цели «0» массив, topScorers. Как так:

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

С помощью функции называется {{topScorerSearch()}}.

Это возвращает только игроков, которые забили. Отлично.

Однако, я хочу запустить это на другие свойства, что приведет к много повторяющегося кода. Как я могу сделать эту функцию общего назначения, которая может быть выполнена для разных свойств?

Я попытался в том числе параметра «подпирать», но он не работает:

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

... и называется функцией, как это:

{{topScorerSearch(goals)}} 

Почему это не работает ? Где я иду не так?

+0

Вы должны принять ответ, который решает проблему, чтобы другие могли заглянуть и увидеть, что она разрешена (также @Sidriel получает свои очки). – shaunhusain

+0

Я собирался ... Это было всего 3 минуты назад, дайте мне секунду :) – Paulos3000

+1

Терпение не мое дело;) – shaunhusain

ответ

2

Я считаю, что проблема заключается в том, что prop не будет разрешать goals, потому что goals обрабатывается как переменная с нулевым или неопределенным значением, что делает prop null или undefined.

Если вы используете альтернативный способ доступа к свойствам объекта object["property"] и используете функцию {{topScorers("goals")}}, она должна работать.

+0

Пробовал это, и никакой радости. Сначала я переключил точечную нотацию на квадратные скобки, и это сработало нормально, но потом я снова попытался применить параметр к функции, а аргумент к ее вызову и ничего ... – Paulos3000

+0

Извините ... моя ошибка. Я применил квадратные скобки к выражению и функции, но не поместил свойство в вызов функции. D'о. Спасибо за вашу помощь. – Paulos3000

 Смежные вопросы

  • Нет связанных вопросов^_^