Javascript 数组。包含问题
因此,我的问题似乎是Javascript 数组。包含问题,javascript,Javascript,因此,我的问题似乎是getNumString()方法操作不正确,因为while循环无限期地进行,但我似乎不知道为什么。这个组应该用你在其中看到的示例字符串填充,但它从不调用任何字符串,而是在while循环没有无限期运行的情况下调用第一个字符串(当然对代码做了一些更改)。如有任何见解,将不胜感激 let deck = [ //"cardR01C01", "cardR01C01", ]; function getNumString(num) { if (num < 10) {
getNumString()
方法操作不正确,因为while循环无限期地进行,但我似乎不知道为什么。这个组应该用你在其中看到的示例字符串填充,但它从不调用任何字符串,而是在while循环没有无限期运行的情况下调用第一个字符串(当然对代码做了一些更改)。如有任何见解,将不胜感激
let deck = [
//"cardR01C01", "cardR01C01",
];
function getNumString(num) {
if (num < 10) {
return "0" + num.toString();
}
else {
return num.toString();
}
}
function getRandomNum(upperLimit) {
return Math.floor((Math.random() * upperLimit) + 1);
}
function fillDeck() {
let cardString = ".cardR" + getNumString(getRandomNum(4)) + "C" +
getNumString(getNumString(13));
while (deck.includes(cardString)) {
cardString = ".cardR" + getNumString(getRandomNum(4)) + "C" +
getNumString(getNumString(13));
}
deck.push(cardString);
deck.push(cardString);
}
for (let i = 0; i < (numCards / 2); i++) {
fillDeck();
}
let deck=[
//“cardR01C01”、“cardR01C01”,
];
函数getNumString(num){
如果(数值<10){
返回“0”+num.toString();
}
否则{
返回num.toString();
}
}
函数getRandomNum(上限){
返回Math.floor((Math.random()*上限)+1);
}
函数fillDeck(){
let cardString=“.cardR”+getNumString(getRandomNum(4))+“C”+
getNumString(getNumString(13));
while(卡片组,包括卡片串){
cardString=“.cardR”+getNumString(getRandomNum(4))+C+
getNumString(getNumString(13));
}
甲板。推(卡绳);
甲板。推(卡绳);
}
for(设i=0;i<(numCards/2);i++){
填充甲板();
}
*经过更多的测试,我发现真正的问题在于.includes函数。有人能告诉我为什么吗?你的意思是在你的代码中使用
getRandomNum(13)
而不是getNumString(13)
?您的代码只能生成4个唯一字符串:。cardR01C13、.cardR02C13、.cardR03C13、.cardR03C13。如果numCards
足够大,那么在生成几张卡之后,所有这些情况都将被覆盖,但是只要该卡已经在卡组中,while循环将继续尝试生成卡(即,它继续尝试生成唯一的卡)。但是,它无法生成更多的唯一卡片,因此循环将永远持续。您的代码中是否打算使用getRandomNum(13)
而不是getNumString(13)
?您的代码只能生成4个唯一字符串:。cardR01C13、.cardR02C13、.cardR03C13、.cardR03C13。如果numCards
足够大,那么在生成几张卡之后,所有这些情况都将被覆盖,但是只要该卡已经在卡组中,while循环将继续尝试生成卡(即,它继续尝试生成唯一的卡)。但是,它无法生成更多的唯一卡,因此循环将永远持续。.toString()
在“0”+num.toString()上不需要
因为num
被“添加”到字符串中,这会导致num
被转换为字符串。您知道deck
是空的,因为字符串被注释掉了,对吗?是的,我知道,这些字符串只是作为示例留在那里。我想按程序添加具有随机值的类似字符串。.toString()
在“0”+num.toString()上不是必需的
因为num
被“添加”到字符串中,这会导致num
被转换为字符串。您知道deck
是空的,因为字符串被注释掉了,对吗?是的,我知道,这些字符串只是作为示例留在那里。我想按程序添加具有随机值的类似字符串。