簡體   English   中英

Javascript / Angular正在修改我的常量變量,即使我不要求他

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM