为什么当我输入匹配的数组编号而不匹配数组

时间:2019-03-05 02:22:19

标签: javascript

我创建了一个彩票猜谜游戏。用户将通过在提示中输入6个数字来尝试猜测中奖数字。如果用户正确猜出所有6个数字,则会显示一个警告框,提示“恭喜您有钱”。但是,当我正确输入所有6个数字时,我一直收到“对不起再次播放”消息。我做错了什么?谢谢,我正在教自己编写代码。

<!DOCTYPE html>
<html>
<head>
    <title>Winning lottery numbers</title>
</head>
<body>
<script type="text/javascript">

var GuessNum = []; 
GuessNum.join(', ');
var winningNumbers = [1, 19, 25, 27, 68, 21];
winningNumbers.join(', ');

for (var i = 0; i < 6; i++) {              
  GuessNum.push(prompt('Enter loto numbers ' + (i+1))); 
}

if(winningNumbers.includes(GuessNum)) {
    alert("Congratulations you're rich");
} else {
    alert("Sorry play again");
}


</script>

</body>
</html> 

4 个答案:

答案 0 :(得分:1)

您的代码存在的问题是,当您执行Set-Location时,您正在将整个数组传递给它。由于.includes()不包含完整的数组,因此它将为false。

无论如何。要解决您的问题,您将需要一个.forEach()循环来遍历winningNumbers并检查winningNumbers是否包含该值。

您必须执行GuessNum,因为e.toString()的结果是一个字符串,因此尽管所有数字都可以相同,但一个字符串和一个整数。

prompt

答案 1 :(得分:0)

尝试添加数组比较功能。

JS Fiddle

<!DOCTYPE html>
<html>
<head>
    <title>Winning lottery numbers</title>
</head>
<body>
<script type="text/javascript">

var GuessNum = []; 
GuessNum.join(', ');
var winningNumbers = [1, 19, 25, 27, 68, 21];
winningNumbers.join(', ');

for (var i = 0; i < 6; i++) {              
  GuessNum.push(prompt('Enter loto numbers ' + (i+1))); 
}

if(arraysEqual(GuessNum,winningNumbers)) {
    alert("Congratulations you're rich");
} else {
    alert("Sorry play again");
}

function arraysEqual(arr1, arr2) {
    if(arr1.length !== arr2.length)
        return false;
    for(var i = arr1.length; i--;) {
        if(arr1[i].toString() !== arr2[i].toString())
            return false;
    }

    return true;
}
</script>

</body>
</html> 

答案 2 :(得分:0)

由于要处理整数数组,因此可以对它们进行排序,然后转换为字符串以进行比较。

var guessNum = []; 
var winningNumbers = [1, 2, 3, 4, 5, 6];

for (var i = 0; i < 6; i++) {              
  guessNum.push(prompt('Enter loto numbers ' + (i+1))); 
}

if(guessNum.sort().toString() === winningNumbers.sort().toString()) {
    alert("Congratulations you're rich");
} else {
    alert("Sorry play again");
}
<!DOCTYPE html>
<html>
<head>
    <title>Winning lottery numbers</title>
</head>
<body>
</body>
</html> 

答案 3 :(得分:0)

您在includes()方法中遇到的问题:

includes()方法确定数组的条目中是否包含某个值,并根据需要返回true或false。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes