[英]Javascript/Angular is modifying my constant variable even thought i do not ask him to
我最近在Javascript / Angular上遇到問題,但尚未找到解決方案。
var listPlayers = $rootScope.Party.players;
$rootScope.Party.order = $scope.randomTeam(listPlayers);
此功能將隨機播放玩家的命令
$scope.randomTeam = function(players){
var team = players;
var order = [];
var index = team.length;
l = team.length;
for (var i = 0; i < l; i++) {
var alea = randomNumber(0,index-1);
order.push(team[alea]);
team.splice(alea,1);
index--;
}
return order;
}
播放器列表如下所示:
$rootScope.Party = {
players: [
{name:'John', id:1},
{name:'Peter', id:2},
{name:'Daniel', id:3},
],
order: [],
}
在末尾:
$rootScope.Party = {
players: [],
order: [{name:'Peter', id:1},
{name:'Peter', id:2},
{name:'John', id:3},]
}
我的“玩家”列表變成空的,我不知道為什么
甚至以為我沒有更改$ rootScope.Party.players,該函數設法清空表,而$ rootScope.Party.players在函數末尾為空。 這確實激怒了我,因為我將其放在另一個變量中,並將該變量作為函數的參數。
您的問題在於var team = players;
更改團隊變量會更改玩家,因為javascript默認情況下會保留舊的引用。
嘗試使用var team = players.slice();
它將創建新的玩家副本,並且更換團隊不會影響玩家。
希望能幫助到你!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.