返回具有特定属性的数组中的对象

时间:2016-05-19 17:59:20

标签: javascript arrays angularjs function foreach

我在编写自己的JS函数时相当新,我正在努力解决这个问题。

我希望运行一个对象数组,找到一个与特定ID匹配的对象,然后返回该对象。

到目前为止,这就是我所拥有的:

var findTeam = function() {
  $scope.extraTeamData.forEach(team) {
     if(team.team_id === $scope.whichTeam) { return team }
  }
    $scope.thisTeam = team;
};

$scope.teamDetails是我的数组,$scope.whichTeam变量包含我正在检查的正确ID。

最终我希望能够将函数产生的对象分配给$scope.thisTeam变量,这样我就可以在视图中调用它的属性。

任何帮助都将不胜感激。

感谢。

3 个答案:

答案 0 :(得分:2)

您可以使用Array#some,如果找到则结束迭代

var findTeam = function() {
    $scope.extraTeamData.some(function (team) {
        if (team.team_id === $scope.whichTeam) { 
            $scope.thisTeam = team;
            return true;
        }
    });
};

答案 1 :(得分:1)

$scope.thisTeam = team;移至if支票内。

var findTeam = function() {
  $scope.teamDetails.forEach(team) {
     if(team.team_id === $scope.whichTeam) {
         $scope.thisTeam = team;
     }
  }
};

答案 2 :(得分:0)

$scope.team = $scope.teamDetails.filter(function (team) {
  return team.team_id === $scope.whichTeam;
})[0];

您需要使用filter数组方法。它创建了与给定谓词匹配的新数组元素(返回布尔值的函数)。然后你只需要取第一个值。

您也可以使用find,但尚未在每个浏览器中实现。

它看起来像这样:

$scope.team = $scope.teamDetails.find(function (team) {
  return team.team_id === $scope.whichTeam;
});