2017-02-09 41 views
-1

我正在嘗試基於團隊目標差異(足球)創建分數預測值。我是JavaScript新手,而且我已經設法實現這一目標。從for循環中計數重複的隨機數

我希望它能像旋轉10次骰子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); 
      } 
    } 
+1

_ 「現在,我想選一個數字(例如:2),看看有多少次發生這種情況列表中的」 _什麼是「名單」?你是否試圖確定'randNum'值中出現的特定值?或者,創建一個'randNum'值的數組,然後確定在數組中出現了多少次特定值的出現? – guest271314

+0

我試圖確定當[randNum]通過循環時發生特定數字的次數,如果這有意義 – CJ1410

+0

後者。我認爲一個數組可能工作。 – CJ1410

回答

1

可以創建一個數組,使用Array.prototype.push()randNum到數組中,然後使用Array.prototype.filter().length確定的值的許多事件是如何陣列內。

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

或者,也可以增加一個變量時randNum等於的值。

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

+0

乾杯。這已經完成了我想要的。非常感謝您的幫助guest271314! – CJ1410

0

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