Javascript 如何在数组中将单独的字符连接成一个字符串?
Javascript How To Concatenate Separate Characters Into One String In Array?
我为下面的 "Heads or Tails" 游戏编写了代码并且:
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"]
我想你的意思是将它添加到数组中,所以在抛六次之后它可能看起来像这样:["Heads", "Heads", "Tails", "Heads", "Tails", "Tails"]
。您可以通过使用抛硬币输出调用 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");
综上所述,肯定有需要改进的地方。您不需要循环一次来构建结果,然后再循环一次来读取结果。
您可以在抛硬币时数出 heads/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");
我为下面的 "Heads or Tails" 游戏编写了代码并且:
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"]
我想你的意思是将它添加到数组中,所以在抛六次之后它可能看起来像这样:["Heads", "Heads", "Tails", "Heads", "Tails", "Tails"]
。您可以通过使用抛硬币输出调用 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");
综上所述,肯定有需要改进的地方。您不需要循环一次来构建结果,然后再循环一次来读取结果。
您可以在抛硬币时数出 heads/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");