📜  一行 javascript 中的 fizzbuzz(1)

📅  最后修改于: 2023-12-03 15:21:26.830000             🧑  作者: Mango

一行 JavaScript 中的 FizzBuzz

在面试中常常会问到 FizzBuzz 题目,这是一个基础的编码题,通过解决这个问题可以展示自己的编程基础知识和解决问题的能力。这个问题的要求是:从 1 至 100,如果一个数字可以被 3 整除,则输出 fizz,如果可以被 5 整除,则输出 buzz,如果可以同时被 3 和 5 整除,则输出 fizzbuzz。

那么如何在一行 JavaScript 中实现 FizzBuzz 的输出呢?

for(let i=1;i<=100;)console.log((i%3?'':'fizz')+(i%5?'':'buzz')||i,++i);

这是一个精简的代码,使用了三目运算符,在控制台输出了 fizz,buzz 和 fizzbuzz。下面我们来解析一下这行神秘代码的实现。

首先是 for 循环,i 初始值为 1,没进行一次循环,就将 i 值加 1,直到 i 大于等于 100。这个循环用的是逗号运算符,每一次运算逗号前面的部分为循环的初始化语句,逗号后面部分为空语句,相当于啥也不做。

接着是 console.log(),作用是将结果输出到控制台上。

其余的是一个三目运算符 (?:),它的语法是 condition ? value1 : value2

我们可以先看第一个三目运算符 (i%3?'':'fizz'),如果 i%3 的结果不为 0,则返回一个空串,否则返回 'fizz'。i%3 的作用是判断 i 是否能被 3 整除。

接着是 (i%5?'':'buzz'),如果 i 能被 5 整除,则返回 'buzz',否则返回一个空串。

这样就完成了条件的判断,如果两者都满足,则输出 'fizzbuzz',否则直接输出当前数值 i。最后 ++i 操作把 i 值加 1。

因为要用到三目运算符,所以这个代码看起来会很长,但在一行内就一目了然了。