【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.ストア