JavaScriptに関するお知らせ

SINCE2019
>
【JS】JavaScriptで世界で一番クールなFizzBuzzと二番目のFizzBuzz

【JS】JavaScriptで世界で一番クールなFizzBuzzと二番目のFizzBuzz


こんにちは!今日はエンジニアなら誰もが知ってるFizzBuzzをJavaScriptで書きたいと思います!

書くだけだと二番煎じなので、めっちゃクールに書きます。可読性?知らん

世界で一番クールなFizzBuzz

どうぞ。

const r = i =>
  console.log(
    (i % 3 ? '' : 'Fizz') + (i % 5 ? '' : 'Buzz') + (i % 3 && i % 5 ? i : ''),
  ) ||
  (i - 100 && r(i + 1))

r(1)

解説

再帰式を用いて関数rを100回実行しています。

console.logで3,5,15の倍数でF,B,FBを出力してます。

console.logは戻り値がfalsyなので、||で次に繋がります。

次のi - 100がtrue、つまりi == 100ならループ終了、 それ以外ならiを1足して再帰です。

世界で二番クールなFizzBuzz

どうぞ。

const r = _ =>
  [...Array(100)].map((_, i) =>
    console.log(
      ((i % 3) - 2 ? '' : 'Fizz') +
        ((i % 5) - 4 ? '' : 'Buzz') +
        ((i % 3) - 2 && (i % 5) - 4 ? i + 1 : ''),
    ),
  )

r()

解説

こちらは関数の実行は1回のみですが、長さ100の配列にmapしてconsole.logを100回出しています。

[... Array(100)]でmapできる長さ100の配列を生成、

console.log部分は上に同じですが、1が0から始まる都合上少々表記が冗長になっています。

使いどころ

...エンジニア同士の会話?の時にどうぞ。まあFizzBuzzはそういうもんだよね。

クールの定義って?

それはもう、短いか、最近の書き方してるか、記号ばっかになってないか?じゃないですかね、うん?



PREV
2019-05-18
【JS】JavaScriptでRange関数(Pythonのと全く同じ振る舞い)

NEXT
2019-05-20
【JS】NuxtのVuexモジュールモードの簡潔な書き方メモ-1.ストア