Javascript 在数组中选择对象时出错

Javascript 在数组中选择对象时出错,javascript,arrays,function,object,Javascript,Arrays,Function,Object,我正在为一个棋盘游戏应用程序编写代码。我已经写了一段简单的代码,用mathrandom确定玩家的位置。mathrandom的结果告诉数组选择4个对象中的1个(玩家),并将结果添加到他们的位置。我还在函数的开头添加了一段代码,以便在数组中向上移动并选择下一个玩家,因此每次单击“掷骰子”按钮时,另一个玩家将获得更多的位置值 问题是,在我遍历整个数组并返回到[0]位置后,它会运行代码两次,因此第一个玩家将获得函数两次,而所有其他玩家仅获得函数一次 这是我的代码: var players = [ {na

我正在为一个棋盘游戏应用程序编写代码。我已经写了一段简单的代码,用mathrandom确定玩家的位置。mathrandom的结果告诉数组选择4个对象中的1个(玩家),并将结果添加到他们的位置。我还在函数的开头添加了一段代码,以便在数组中向上移动并选择下一个玩家,因此每次单击“掷骰子”按钮时,另一个玩家将获得更多的位置值

问题是,在我遍历整个数组并返回到[0]位置后,它会运行代码两次,因此第一个玩家将获得函数两次,而所有其他玩家仅获得函数一次

这是我的代码:

var players = [
{name: "Player 1", positie: 0},
{name: "Player 2", positie: 0},
{name: "Player 3", positie: 0},
{name: "Player 4", positie: 0}
];
var position = 0;
var currentPlayer = players[position];

function rolClick(){
currentPlayer = players[position++];
if (position > players.length){
    position = 0;
    currentPlayer = players[position];
}
var rollen = Math.floor(Math.random() * 6) + 1;
if (rollen === 1){
    currentPlayer.positie += 1;
    console.log("het is 1")
}else if(rollen === 2){
    currentPlayer.positie += 2;
    console.log("het is 2")
}else if(rollen === 3){
    currentPlayer.positie += 3;
    console.log("het is 3")
}else if(rollen === 4){
    currentPlayer.positie += 4;
    console.log("het is 4")
}else if(rollen === 5){
    currentPlayer.positie += 5;
    console.log("het is 5")
}else if(rollen === 6){
    currentPlayer.positie += 6;
    console.log("het is 6")
}else {
    console.log("Oops, er is iets fout gegaan.")
};
console.log(currentPlayer);
};

我认为您的问题是,您首先在调用
rolClick()
函数之前设置
currentPlayer
,然后在掷骰子之前重置/更新
currentPlayer
。请参阅下面的评论部分

var players = [
    {
        name: 'Player 1',
        positie: 0
    },
    {
        name: 'Player 2',
        positie: 0
    },
    {
        name: 'Player 3',
        positie: 0
    },
    {
        name: 'Player 4',
        positie: 0
    }
];
var position = 0;

// currentPlayer is set to player 1
var currentPlayer = players[position];

function rolClick() {
    // currentPlayer is now set to player 2
    currentPlayer = players[position++];

    if (position // ... etc etc ...

}
要完成此更新,请在
rolClick()
函数的末尾而不是开始处执行此更新

此外,您可能希望研究使用
switch()
语句替换if-else-if筛选列表。更多信息请访问

希望有帮助。:)

HTML

<button>
  Rol de dobbelsteen
</button>
<span></span>

var玩家=[{
姓名:“玩家1”,
阳性:0
}, {
姓名:“玩家2”,
阳性:0
}, {
姓名:“玩家3”,
阳性:0
}, {
姓名:“玩家4”,
阳性:0
}];
var位置=0;
var currentPlayer=null;
函数rolClick(){
如果(位置>=players.length){
位置=0;
}
控制台日志(“位置”,位置);
currentPlayer=玩家[position++];
var rollen=Math.floor(Math.random()*6)+1;
currentPlayer.positie+=rollen;
$(“span”).html(“Je-hebt”+rollen+“gerold-voor”+currentPlayer.name);
};
$(“按钮”)。单击(函数(){
rolClick();
});

多贝尔斯汀酒店

如果有条件,只需从第一个函数返回即可。
var players = [
{name: "Player 1", positie: 0},
{name: "Player 2", positie: 0},
{name: "Player 3", positie: 0},
{name: "Player 4", positie: 0}
];
var position = 0;
var currentPlayer = null;

function rolClick(){
  if (position >= players.length){
      position = 0;
  }
  console.log("Position", position);
  currentPlayer = players[position++];

   var rollen = Math.floor(Math.random() * 6) + 1;
   currentPlayer.positie += rollen;
   $("span").html("Je hebt " + rollen + " gerold voor " + currentPlayer.name);
};

$("button").click(function() {
    rolClick();
});