Javascript 掷骰子结果的水平直方图

Javascript 掷骰子结果的水平直方图,javascript,node.js,ecmascript-6,Javascript,Node.js,Ecmascript 6,我需要一个显示水平直方图的函数。该函数接受骰子卷数和模拟骰子卷数的函数(无需实现)。调用此函数将生成一个从1到6的值,该值对应于骰子的一个面 直方图包含线条,每条线条对应一个骰子面和该面上的滴数。结果以图形方式显示(使用#字符)并作为数值显示,除非数量为0(零) 前。 游戏(101,滚球) 1 |######################23 2 |###############18 三,三,十三, 4 |####################21 5 |##########12 6 |#

我需要一个显示水平直方图的函数。该函数接受骰子卷数和模拟骰子卷数的函数(无需实现)。调用此函数将生成一个从1到6的值,该值对应于骰子的一个面

直方图包含线条,每条线条对应一个骰子面和该面上的滴数。结果以图形方式显示(使用#字符)并作为数值显示,除非数量为0(零)

前。 游戏(101,滚球)

  • 1 |######################23
  • 2 |###############18
  • 三,三,十三,
  • 4 |####################21
  • 5 |##########12
  • 6 |#############14

我知道我需要使用reduce,但我不知道如何。。。。请帮帮我,任何人

记住,reduce用于从数组中推断单个值:

let timesIAskedForHomeworkHelpByWeek = [4, 2, 7, 0, 42] // last week was hard
let totalAsks = timesIAskedForHomeworkHelpByWeek.reduce((acc, res) => acc += res)
console.log(totalAsks) // prints 55
考虑到我们有一个六面骰子(我会质疑默认为六面骰子的老师的效率),我们知道滚动骰子会给我们六个可能值中的一个。我们只需要记录我们得到每个数字的次数。下面数组中的每个数字都是我们得到每个结果的次数。一开始它们是零,因为我们还没有掷骰子

let results = [0, 0, 0, 0, 0, 0];
假设rollDie函数返回结果(在1-6中),我们可以多次调用它:

let numRolls = 101;
for (let i = 0; i < numRolls; i++) {
    let res = rollDie();
    results[res-1]++; // remember arrays are zero-indexed in Javascript!
}
26 1、14 2、28 3等。要使用#号格式化结果,称为“数字号”、“磅号”或“哈希”,取决于您来自何处,我们可以循环查看结果:

for (let i = 0; i < len(results); i++) {
    console.log(i+1, '|', '#'.repeat(results[i]), results[i]);
}
甚至

const play = (numRolls, rollDie) => {
    // ...
}

两者都做同样的事情,不同的人会告诉你其中一个更好;前一种语法可能比你使用的时间长,而后一种语法只使用了几年。

像“我如何才能做到这一点”这样的问题需要包括一个特定的问题或重点,并且必须表明提问者自己已经充分处理了它。Stack Overflow不是一个提供程序员为您工作或以这种方式帮助您的网站。谢谢您的详细回答。我试试看。
function play(numRolls, rollDie) {
    // ...
}
const play = (numRolls, rollDie) => {
    // ...
}