【问题标题】:JavaScript: How To Count Total Number Of Heads and Tails In Random Coin Flip Within Associative Array?JavaScript:如何计算关联数组中随机硬币翻转的正面和反面总数?
【发布时间】:2016-07-04 05:56:35
【问题描述】:

我有一个数组,其中包含另外两个关联数组:

 var coinToss = [];

 coinToss["FlipNumber"]; coinToss["Result"];

我已经拥有了随机发生器功能和一切。我只需要帮助计算所有“正面”和“反面”的总和。

我试过了:

 for (var i = 0; i < coinToss.length; i++)
 {
      var headCount = 0, tailCount = 0;

      if (coinToss["Result"] === 'heads')
            headCount++;
      else
            tailCount++;
 }
 document.getElementByID.innerHTML += "Heads: " + headCount + " " + "Tails: " + tailCount + "<br>";

但它只打印出每个单独的结果,例如 5 次硬币翻转:

 //*Heads: 1   Tails: 0 *
 //*Heads: 1   Tails: 0 *
 //*Heads: 0   Tails: 1 *
 //*Heads: 1   Tails: 0 *
 //*Heads: 0   Tails: 0 *

我想要的是把所有的“正面”加起来,然后分别把所有的“反面”加起来。为什么每次循环重复时它都会重置回0?

按要求编辑:

 function coinFlip() {
        return (Math.floor(Math.random() * 2) === 0) ? 'heads' : 'tails';
 }

 for (var x = 0; x < 6 (/*i.e. number of coin toss*/); x++)
 {
     var coinToss = [];
     coinToss["flipNumber"] = /*varies by user input*/;
     coinToss["Result"] = (coinFlip());

     /*a print code that prints Flip Number: () and Result: ()*/
 }

【问题讨论】:

  • 您没有访问循环中的数组元素。您需要在某处使用索引i
  • 请将您的帖子编辑为minimal, complete, verifiable example。例如,既没有抛硬币功能,也没有要求和的示例数据。如果没有其中之一,就很难得到正确的答案。
  • 我最近刚刚在问题底部添加了完整代码。

标签: javascript loops associative-array coin-flipping


【解决方案1】:

这应该让你开始:

// Make sure you're declaring your variables outside of the for loop:

// I'm not sure what your actual array looks like, but let's say it looks something like this:
var arr = [0, 0, 1, 1, 1, 0, 1, 0, 1];
arr["Result"] = "heads";
var headCount = 0, tailCount = 0;

for (var i = 0; i < arr.length; i++) {
    if (arr["Result"] === "heads")
        headCount += arr[i];
    else
        tailCount += arr[i];
}
console.log("Heads: " + headCount + " " + "Tails: " + tailCount);

【讨论】:

  • 我希望有一种更简单的方式使用循环...我只是 Javascript 的新手...
  • 哦,那我应该先创建一个对象吗? “结果”会有所不同,因为它取决于我实现的 coinFlip() 函数:
【解决方案2】:
//* these variables should be initialised outside the loop
//* otherwise they'll get initialised with zero each time the loop runs

var headCount = 0, tailCount = 0;

for (var i = 0; i < coinToss.length; i++) {

  if (coinToss["Result"] === 'heads')
        headCount++;
  else
        tailCount++;
 }

document.getElementByID.innerHTML += "Heads: " + headCount + " " +     "Tails: " + tailCount + "<br>";

【讨论】:

    猜你喜欢
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 2023-03-06
    • 1970-01-01
    • 2011-04-09
    相关资源
    最近更新 更多