fizzbuzz js实现
FizzBuzz 问题描述
FizzBuzz 是一个经典的编程问题,要求编写一个程序,输出从 1 到 n 的数字。对于 3 的倍数输出 "Fizz",5 的倍数输出 "Buzz",既是 3 又是 5 的倍数输出 "FizzBuzz",否则输出数字本身。
JavaScript 实现方法
方法 1:基本循环与条件判断
function fizzBuzz(n) {
for (let i = 1; i <= n; i++) {
if (i % 15 === 0) {
console.log("FizzBuzz");
} else if (i % 3 === 0) {
console.log("Fizz");
} else if (i % 5 === 0) {
console.log("Buzz");
} else {
console.log(i);
}
}
}
fizzBuzz(100);
方法 2:字符串拼接优化
通过先检查 3 和 5 的倍数情况,减少模运算次数。
function fizzBuzz(n) {
for (let i = 1; i <= n; i++) {
let output = "";
if (i % 3 === 0) output += "Fizz";
if (i % 5 === 0) output += "Buzz";
console.log(output || i);
}
}
fizzBuzz(100);
方法 3:使用三元运算符
简化条件判断,适合短代码实现。
function fizzBuzz(n) {
for (let i = 1; i <= n; i++) {
console.log(
i % 15 === 0 ? "FizzBuzz" :
i % 3 === 0 ? "Fizz" :
i % 5 === 0 ? "Buzz" : i
);
}
}
fizzBuzz(100);
方法 4:ES6 箭头函数与数组映射
利用数组的 map 方法生成结果,适合函数式编程风格。

const fizzBuzz = n =>
Array.from({ length: n }, (_, i) => i + 1)
.map(num =>
(num % 15 === 0 ? "FizzBuzz" :
num % 3 === 0 ? "Fizz" :
num % 5 === 0 ? "Buzz" : num))
.forEach(result => console.log(result));
fizzBuzz(100);
注意事项
- 模运算的顺序很重要,优先检查 15(即 3 和 5 的最小公倍数)的情况。
- 方法 2 和方法 3 减少了重复的模运算,性能更优。
- 方法 4 适合对函数式编程有偏好的开发者,但可能牺牲部分可读性。
以上方法均能正确实现 FizzBuzz 问题,开发者可根据实际需求选择适合的风格。






