For Loop in JavaScript - Lottery Website

大城市里の小女人 提交于 2019-12-02 13:49:02

问题


I am trying to turn this code into a correct for loop statement, so that I can save my repetitions. I have tried my best to get it done, but I just don't know how I can write it correctly:

function myProg() {
    var luckyNumber = 3;
    var luckyNumber2 = 5;
    var luckyNumber3 = 8;
    var firstInput = document.luckForm.numberBox.value;
    var secondInput = document.luckForm.numberBox2.value;
    var thirdInput = document.luckForm.numberBox3.value;
    var temp = '';

    if (firstInput == luckyNumber && secondInput == luckyNumber2 && thirdInput == luckyNumber3 || firstInput == luckyNumber && secondInput == luckyNumber3 && thirdInput == luckyNumber2 || firstInput == luckyNumber2 && secondInput == luckyNumber3 && thirdInput == luckyNumber || firstInput == luckyNumber2 && secondInput == luckyNumber && thirdInput == luckyNumber3 || firstInput == luckyNumber3 && secondInput == luckyNumber && thirdInput == luckyNumber2 || firstInput == luckyNumber3 && secondInput == luckyNumber2 && thirdInput == luckyNumber)
    {
        alert('Congratulations! You got all 3 numbers correct. You\'ve won £1000!');
    }
}

回答1:


try something like this:

Array.prototype.getDuplicates = function() {
  var cache = {}, results = [], that = this;
  that.forEach(function(item, index) {
      if(!cache.hasOwnProperty(item) && that.lastIndexOf(item) > index) {
          results.push(item);
      }
      cache[item] = true;
  });
  return results;
}

var answers = [luckyNumber, luckyNumber2, luckyNumber3];
var indexes = [answers.indexOf(firstInput), answers.indexOf(secondInput), answers.indexOf(thirdInput)];
if(indexes.indexOf(-1) === -1 && indexes.getDuplicates().length === 0) {
  // alert("Whatever");
}



回答2:


Here's an example without using array. Input check was added.

function myProg() {
    var numbersToMatch = 3;
    var luckyNumbers = {n1: 3, n2: 5, n3: 8};
    var firstInput = parseInt(document.luckForm.numberBox.value);
    var secondInput = parseInt(document.luckForm.numberBox2.value);
    var thirdInput = parseInt(document.luckForm.numberBox3.value);

    if (isNaN(firstInput) || isNaN(secondInput) || isNaN(thirdInput)) {
        alert('All inputs must be numbers!');
        return;
    }

    var inputs = {n1: firstInput, n2: secondInput, n3: thirdInput};
    var matches = {n1: false, n2: false, n3: false};

    for (var i in inputs) {
        for (var j in luckyNumbers) {
            if ((!matches[j]) && (luckyNumbers[j] == inputs[i])) {
                matches[j] = true;
                numbersToMatch--;
                break;
            }
        }
    }

    if (numbersToMatch == 0) {
        alert('Congratulations! You got all 3 numbers correct. You\'ve won £1000!');
    }
}


来源:https://stackoverflow.com/questions/13093050/for-loop-in-javascript-lottery-website

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!