我有一系列玩家名称和等级的玩家。
$scope.players = [
{"name": "Qasim", "rating": "10"},
{"name": "Mahsam", "rating": 10},
{"name": "Aj", "rating": 3},
{"name": "Osman", "rating": 7},
{"name": "Usama", "rating": 7},
{"name": "Bilal", "rating": 3}
]
我需要根据他们的评分将球员分成两队。
var playerLength = $scope.players.length,
grouped = _.groupBy($scope.players,function(item){return item.rating});
我希望将两队中的球员分成两组平衡的球员。
答案 0 :(得分:1)
这是制作团队的一种方式。我遍布所有玩家并将玩家推向最弱的团队。
这是JSFiddle demo,比摘录更具可读性。
var myApp = angular.module('myApp', []);
myApp.controller('MyCtrl', ['$scope', function($scope) {
$scope.players = [{
"name": "Qasim",
"rating": 10
}, {
"name": "Mahsam",
"rating": 10
}, {
"name": "Aj",
"rating": 3
}, {
"name": "Osman",
"rating": 7
}, {
"name": "Usama",
"rating": 7
}, {
"name": "Bilal",
"rating": 3
}];
$scope.team1 = [];
$scope.team2 = [];
$scope.createTeams = function() {
angular.forEach($scope.players, function(player) {
if ($scope.teamStrength($scope.team1) < $scope.teamStrength($scope.team2)) {
$scope.team1.push(player);
} else {
$scope.team2.push(player);
}
});
}
$scope.teamStrength = function(team) {
var sum = 0;
if(team.length == 0) return 0;
for(var i = 0; i < team.length; i++) {
sum += team[i].rating;
}
return sum;
};
}]);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp">
<div ng-controller="MyCtrl">
<button ng-click="createTeams()">Create teams!</button>
<h1>Team 1</h1>
<div ng-repeat="p in team1">
{{p.name}} ({{p.rating}})
</div>
<h1>Team 2</h1>
<div ng-repeat="p in team2">
{{p.name}} ({{p.rating}})
</div>
</div>
</div>
&#13;
答案 1 :(得分:0)
var playerArr = {};
var rateArr = []
var leftTeam = [];
var rightTeam = [];
for(id in $scope.players){
playerArr[$scope.players[id].rating] = $scope.players[id];
rateArr.push($scope.players[id].rating);
}
rateArr.sort();
for(i = 0; i < rateArr.length; i+=2) {
leftTeam.push({name:playerArr[rateArr[id]].name, rating: playerArr[rateArr[id]].rating});
}
for(i = 1; i<rateArr.length; i+=2){
rightTeam.push({name.playerArr[rateArr[id]].name, rating: playerArr[rateArr[id]].rating;
}
答案 2 :(得分:-2)
一种方法:
更新:已进行更改以匹配问题。
{{1}}
:)