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
是空的,因为字符串被注释掉了,对吗?是的,我知道,这些字符串只是作为示例留在那里。我想按程序添加具有随机值的类似字符串。