【问题标题】:For Loop in JavaScript - Lottery WebsiteJavaScript 中的 For 循环 - 彩票网站
【发布时间】:2012-10-17 01:56:03
【问题描述】:

我正在尝试将此代码转换为正确的 for 循环语句,以便保存我的重复。我已经尽力完成它,但我只是不知道如何正确编写它:

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!');
    }
}

【问题讨论】:

  • 对数字和输入使用数组而不是单独的变量。
  • 哦,我不允许使用数组 :( 我必须使用最基本的 javascript 语句并弄清楚如何用循环对其进行总结。
  • 如果这是家庭作业,我不确定这是寻求帮助的地方——我也认为这听起来像是一个非常愚蠢的任务。
  • 我猜是的。唯一的问题是我无法理解它。我在想 var t = [luckyNumber, luckyNumber2, luckyNumber3] for (var i = 0, i

标签: javascript loops for-loop while-loop


【解决方案1】:

这是一个不使用数组的示例。添加了输入检查。

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!');
    }
}

【讨论】:

    【解决方案2】:

    试试这样的:

    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");
    }
    

    【讨论】:

    • 这将使5 5 5 成为有效的组合。我不这么认为。
    猜你喜欢
    • 1970-01-01
    • 2018-04-29
    • 2021-07-29
    • 2019-04-10
    • 2011-10-27
    • 2011-03-13
    • 2018-03-09
    • 1970-01-01
    • 2015-02-25
    相关资源
    最近更新 更多