我有一个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;
}
我无法理解这有什么问题。如果有人可以,会感激一些帮助。
答案 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;
}