这种解决 Fizzbuzz 挑战的方法叫什么?

What is this way of resolving the Fizzbuzz challenged called?

我是编程新手,目前正在做 FizzBu​​zz 测试,起初看起来很简单,但我们有一些要求来执行它:

我是用switch语句搞定的,网上查了一下,发现这种方式比较短,但是不清楚这个FizzBu​​zz挑战的解决过程是怎样的。

这是代码:

var i, values = [, , 'fizz', , 'buzz', 'fizz', , , 'fizz', 'buzz', , 'fizz', , , 'fizzbuzz'];
for (i = 0; i < 100; console.log(values[i++ % 15] || i));

如果有人理解这种解决 FizzBu​​zz 挑战的方法,我将不胜感激。

它被称为"lookup table"。响应模式每 15 个数字循环一次所有可能性,因为这是 315 的最小公倍数。所以我们以 15 为模计算数字,并将其用作包含所有 15 种可能性的数组的索引。

数组中的空白元素用于打印数字本身,而不是 fizzbuzz。留下一个数组元素大致相当于指定undefined作为值,所以这只是一种较短的写法

values = [undefined, undefined, 'fizz', undefined, 'buzz', 'fizz', undefined, undefined, 'fizz', 'buzz', undefined, 'fizz', undefined, undefined, 'fizzbuzz'];

由于 undefined 是错误的,只要数组元素未填充其中一个字符串,values[i++ % 15] || i 就会是 i