计算for循环

时间:2017-02-09 21:08:58

标签: javascript

我正在尝试根据球队的球门差异(足球)创建一个得分预测器。我是JavaScript的新手,我已经成功实现了这一目标。

我希望它像是一个十次骰子旋转20次+球队的净胜球差距。我觉得我有点排序。现在用我的代码我在控制台中记录了一个随机数列表,这就是我想要的。现在我想选择一个数字(例如2)并查看列表中出现的次数。我想将此保存在一个名为homeFinalScore的新变量中(因此,如果在随机数列表中出现“2”三次,则homeFinalScore变量应为3)。我已经尝试了几件事但却无法对它进行排序!

任何帮助都会非常有帮助。提前谢谢!

 var homeFinalScore = 0;

        function calculateScore(){
            var homeTeam = document.getElementById("HomeTeam").value;
            var awayTeam = document.getElementById("AwayTeam").value;
            var homeGd = parseInt(document.getElementById("HomeGD").value);
            var awayGd = parseInt(document.getElementById("AwayGD").value);

            var homeGd = 20 + homeGd;
            var awayGd = 15 + awayGd;

            for (i = 0; i < homeGd; i++) {
                var randNum = Math.floor(Math.random() * 11); 
                console.log(randNum);
            }
  }

2 个答案:

答案 0 :(得分:1)

您可以创建一个数组,使用Array.prototype.push()randNum推送到数组,然后使用Array.prototype.filter().length来确定值中出现的值的数量阵列。

&#13;
&#13;
var homeGd = 20 + 2;
var awayGd = 15 + 2;
var arr = [];

function countOccurrences(n, arr) {
  return arr.filter(function(value) {
    return value === n
  }).length;
}

for (i = 0; i < homeGd; i++) {
  var randNum = Math.floor(Math.random() * 11);
  arr.push(randNum);
}

console.log(arr);

console.log(countOccurrences(2, arr));
&#13;
&#13;
&#13;

或者,您可以在randNum等于值时增加变量。

&#13;
&#13;
var homeGd = 20 + 2;
var awayGd = 15 + 2;
var n = 0;
var num = 2;

for (i = 0; i < homeGd; i++) {
  var randNum = Math.floor(Math.random() * 11);
  console.log(randNum);
  if (randNum === num) {
    ++n
  }
}

console.log("occurrences of 2:", n);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

&#13;
&#13;
const homeGd = 10;
const randomNumbers = []; // array of random numbers

for (i = 0; i < homeGd; i++) {
    randomNumbers.push(Math.floor(Math.random() * 11));
}
const countBy = randomNumbers.reduce((acc, current) => {
    acc[current] = (acc[current] || 0) + 1;
    return acc;
}, {});

console.log(countBy);
&#13;
&#13;
&#13;