Javascript 如何将单独的字符连接成数组中的一个字符串?

标签 javascript arrays join associative-array string-concatenation

我为下面的“正面或反面”游戏编写了代码:

var userInput = prompt("Enter maximum number output: ");

function coinFlip() {
  return (Math.floor(Math.random() * 2) === 0) ? 'Heads' ; 'Tails';
}

for (var i = 0; i < 6; i++)
{
  var result = [];

  result["randomNum"] = (Math.floor(Math.random()*userInput);

  result["coin"] = (coinFlip());
}

我正在尝试使用以下代码来计算总正面的总和和总尾部的总和:

var headsCount = 0;
var tailsCount = 0;

for (var j = 0; j < result["coin"].length; j++)
{
   if (result["coin"] == 'Heads')
      headsCount++;
   else
      tailsCount++;
}

唯一的问题是它正在计算 result["coin"] 数组中 'Heads''Tails' 的每个字符作为单独的字符串(例如 'H'-'e'-'a'-'d'-'s'),而不是完整的字符串(例如 "Heads" )。因此,上面的循环每次运行时不会增加 1,而是增加 +5

我希望它仅增加 +1

如何使代码读取存储在 result["coin"] 中的完整字符串,而不是逐个字符?

已编辑 - 将 <2 更改为 *2

最佳答案

var result = []; 位于 for 循环内部,因此每次都会被空数组覆盖。因此,当您尝试循环结果时,其中只有一项;最后一个。将结果数组从循环中拉出,以便您可以在每次迭代中添加到它。

看来userInput应该是循环次数。不确定为什么将其放入 result["randomNum"] 中。 result 是一个数组,而不是一个对象,因此它只有整数键。

我认为您的意思不是将硬币抛掷的结果添加到 result["coin"] 中,而是将其添加到数组中,因此在抛掷六次后,它可能看起来像这样:[“正面”,“正面”,“反面”,“正面”,“反面”,“反面”]。您可以通过使用抛硬币输出调用 result.push 来完成此操作。

要随机获得两个结果之一,请将 Math.random() 的输出与 0.5 进行比较,0.5 是限制之间的一半。小于0.5的数字可以被认为是正面,而大于或等于0.5的数字可以被认为是反面。

把它们放在一起,我认为这就是你想要的:

function coinFlip() {
  return Math.random() < 0.5 ? 'Heads' : 'Tails';
}

var result = [];
var userInput = parseInt(prompt("Enter maximum number output: "), 10);
for (var i = 0; i < userInput; i++) {
  result.push(coinFlip());
}

var headsCount = 0;
var tailsCount = 0;

for (var j = 0; j < result.length; j++) {
  if (result[j] == 'Heads')
    headsCount++;
  else
    tailsCount++;
}

console.log(headsCount, "heads and", tailsCount, "tails");

尽管如此,肯定还有需要改进的地方。您不需要循环一次来构建结果,然后再循环一次来读取结果。

您可以在翻转硬币时数出正面/反面的数量。例如:

function isCoinFlipHeads() {
  return Math.random() < 0.5;
}

var numFlips = parseInt(prompt("How many flips?"), 10);
var heads = 0;
var tails = 0;
for (var i = 0; i < numFlips; i++) {
  isCoinFlipHeads() ? heads++ : tails++;
}
console.log(heads, "heads and", tails, "tails");

关于Javascript 如何将单独的字符连接成数组中的一个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38298445/

相关文章:

arrays - 循环队列中满/空缓冲区的区别

ios - 我无法在 swift 3 中将数据从模型类传递到 TableView ?

sql-server - 在 SQL Server 中使用 JOIN 更新表?

cakephp - 如何在 CakePHP 中跨多个表编写连接查询?

javascript - 如何在不使用绝对位置的情况下将 html 控件动态放置到具有 x、y 位置的 div 中

javascript - 在 JS 中,我可以仅 require() 模块的导出吗?

javascript - 使用cesiumjs计算两个lat/long/alt点之间的仰 Angular

PHP按值合并数组为2个不同的数组值

javascript - $.each 功能因对象类型而异

MySQL 根据另一个表的值更新表