返回数组中的对象' true'参数

时间:2016-05-27 08:25:57

标签: arrays angularjs foreach push truthiness

我有一个teamDetails数组,其中有一个squad数组,其中包含player个对象。每个玩家对象都有injured属性,其中包含值"true""false"

我想写一个循环遍历数组的函数,只返回受伤属性评估为真的玩家。

这是我到目前为止(不工作):

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

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

  return injuredPlayers;
}

我无法理解这有什么问题。如果有人可以,会感激一些帮助。

6 个答案:

答案 0 :(得分:1)

您无需编写任何功能。角度适合你。

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

这里$ filter是角度过滤器。依赖注入您正在使用的控制器或服务。

有关角度滤镜的更多信息,请参阅here

注意:第二个是严格类型检查。它相当于 injured===true

修改

直接在视角上显示角度有更好的解决方案。

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

在视图中使用时不需要任何依赖注入或控制器。

答案 1 :(得分: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;
}

答案 2 :(得分:0)

您可以使用filter返回受伤的球员:

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

答案 3 :(得分:0)

试试这个

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

答案 4 :(得分: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);

答案 5 :(得分:0)

你做的一切都是正确的,只留下了一些东西

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

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

     return injuredPlayers;
}