В вашем коде есть несколько ошибок:
- Вы переопределяете
$scope.filterhockeyPlayers
на каждой итерации цикла for
, поэтому будут использоваться только результаты последнего элемента $scope.hockeyPlayersId
, остальные опущены.
returnVal
абсолютно бесполезен. 1
или 0
будут возвращены из-за if-else
.
Теперь, чтобы это исправить, вам нужно изменить код так, чтобы filter
был самым внешним. И для каждого объекта в $scope.Players
просто проверьте, включен ли идентификатор этого объекта в $scope.hockeyPlayersId
, используя Array#indexOf
или Array#includes
:
$scope.filterhockeyPlayers = $scope.Players.filter(function (obj) { // filter objects from $scope.Players
return $scope.hockeyPlayersId.includes(obj.PlayersId); // where the id is included in $scope.hockeyPlayersId
});
То же самое, что и использование цикла for
, например:
$scope.filterhockeyPlayers = $scope.Players.filter(function (obj) {
for (var k = 0; k < $scope.hockeyPlayersId.length; k++) {
if(obj.PlayersId == $scope.hockeyPlayersId[k]) {
return true;
}
}
return false;
});
Надеюсь, это имеет смысл; -)