gpt4 book ai didi

javascript - 嵌套 'for' 循环 - 数组未定义

转载 作者:行者123 更新时间:2023-11-30 17:04:04 25 4
gpt4 key购买 nike

我正在开发一个 JS,我想创建一个简单的游戏,首先选择玩家数量、每个玩家的姓名以及玩家是否是庄家。每场比赛只能有一名荷官:

function player(playerName, playerDealer) {
this.playerName = playerName;
this.playerDealer = playerDealer;

}
var playerNumber = prompt('Nr of players?');
var playersArray = [];
for (i = 0; i < playerNumber; i++) {
var j = i + 1;

var dealerAssigned = false; // control variable to check whether dealer has been assigned
var inputName = prompt('Name of player nr ' + j);
var inputDealer = prompt('Is player ' + inputName + ' also a dealer? (yes/no)');
playersArray[i] = new player(inputName, inputDealer);

for (k=0;k<playerNumber;k++){ // I want to go through the players array to check if dealer has been assigned
if (playersArray[k].playerDealer == 'yes') {
dealerAssigned=true;
break;
};
};

if(dealerAssigned){ //if dealer has been assigned, don't add the current player to the array and continue with the next iteration
alert("already assigned");
continue;
};

};

我需要在循环中加入一个简单的测试,以检查经销商是否已被指定。如果是这样,我希望脚本只提醒“已分配”并跳到下一个玩家。但是我不断收到以下错误

TypeError: playersArray[k] is undefined

谁能解释为什么它是未定义的?/我做错了什么?

最佳答案

在我看来,您具体询问的错误是您正在迭代未定义的数组值,正如您得到的错误所暗示的那样。

你得到了你想要排队的玩家数量

var playerNumber = prompt('Nr of players?');

然后,您继续进行两次迭代(一个嵌套在另一个迭代中),其中内部循环试图访问尚未分配的值,因为外部循环尚未到达那里:

for (i = 0; i < playerNumber; i++) {
playersArray[i] = new player(inputName, inputDealer);
for (k=0; k < playerNumber; k++) {
if (playersArray[k].playerDealer == 'yes') {
...
}
}
}

在我看来,这里的逻辑错误是嵌套循环。我建议只在一个循环中初始化所有玩家,然后验证所有玩家都有指定的荷官。

我应该补充一点,我在这里是故意短视的,非常狭隘地关注提出的问题,而忽略了我看到的其他问题。

关于javascript - 嵌套 'for' 循环 - 数组未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28331423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com