【发布时间】:2018-06-26 21:09:01
【问题描述】:
我是编程新手,目前正在做 FizzBuzz 测试,起初看起来很简单,但我们有一些要求来执行它:
- 我只能使用一个
if。没有多个分支,三元 运营商或else。 - 单元测试。
我是通过switch语句实现的,但是上网查了一下,发现这种方式比较短,但是不清楚这个解决FizzBuzz挑战的过程是怎样的。
这是代码:
var i, values = [, , 'fizz', , 'buzz', 'fizz', , , 'fizz', 'buzz', , 'fizz', , , 'fizzbuzz'];
for (i = 0; i < 100; console.log(values[i++ % 15] || i));
如果有人理解这种解决 FizzBuzz 挑战的方法,我将不胜感激。
【问题讨论】:
-
我认为它没有特定的名称。它们索引到一个稀疏数组,使用模数每 15 个数字重复相同的模式。
-
FizzBuzz 序列每 15 个元素重复一次。模运算符
%利用了这一点。空数组元素在数组中变为undefined,这是错误的,因此i的值可以用作后备。
标签: javascript arrays for-loop fizzbuzz