首页 > 解决方案 > 在 JavaScript 中包含数组问题

问题描述

我在 JavaScript 中遇到了一个简单逻辑的问题,它检查数组中出现的数字。问题定义如下:

没有匹配 0

确保您的应用程序可以容纳重复数字。例如,如果用户猜测 1、2 和 3,并且随机生成的数字是 1、1 和 1,则不要将三个正确猜测的功劳归功于用户 - 只有一个。将文件另存为 Lottery。

主要问题发生在if (lotteryResults.includes(guesses[j])). 我不知道为什么当我在includes.

标签: javascript

解决方案


问题是prompt()返回一个应该转换为数字的字符串。您可以使用+将其转换为数字

for (var i = 1; i <= TIMES; i++) {
  var userInput = +prompt("Enter a guess");
  guesses.push(userInput);
}

第二个问题是您正在比较数组guesses == lotteryResults。这永远不会回来true。您可以使用join()然后比较

if (guesses.join('') == lotteryResults.join(''))

var TIMES = 3;

var userFirstGuess;
var userSecondGuess;
var userThirdGuess;

var guesses = [];

var firstRandom = Math.floor(Math.random() * 3) + 1;
var secondRandom = Math.floor(Math.random() * 3) + 1;
var thirdRandom = Math.floor(Math.random() * 3) + 1;

for (var i = 1; i <= TIMES; i++) {
  var userInput = +prompt("Enter a guess");
  guesses.push(userInput);
}

alert(guesses);

var winTen = 10;
var WinHun = 100;
var winThoun = 1000;
var winMillion = 10000;
var winZero = 0;

var lotteryResults = [];
lotteryResults.push(firstRandom);
lotteryResults.push(secondRandom);
lotteryResults.push(thirdRandom);

if (guesses.join('') == lotteryResults.join('')) {
  alert("You have won: $ " + winMillion);
} else {
  var matchCount = 0;
  for (var j = 0; j < guesses.length; j++) {
    if (lotteryResults.includes(guesses[j])) {
      matchCount++
      var index = lotteryResults.indexOf(guesses[j]);
      lotteryResults.splice(index);
      alert('Lottery ' + lotteryResults);
    }
  }

  switch (matchCount) {
    case 0:
      alert("You have won: $ " + winZero);
      break;
    case 1:
      alert("You have won: $ " + winTen);
      break;
    case 2:
      alert("You have won: $ " + winHun);
      break;
    case 3:
      alert("You have won: $ " + winThoun);
      break;
  }
}


推荐阅读