MysticDollアドベントカレンダー25日目

ついに25日目まで来てしまったものの、書くことが思いつかないので、FizzBuzzでも書きます。

const FizzBuzz = (n) => {
  Array(n).fill("").map((v, i) => 
    (i + 1) % 15 === 0 ? "FizzBuzz" : ((i + 1) % 3 === 0 ? "Fizz" : ((i + 1) % 5 === 0 ? "Buzz" : i)))
    .forEach(v=>console.log(v));
};

これでn番目までのFizzBuzzが出るはず(面倒なのでテストしてない)

こういうCoffeeScriptの出したJavaScriptみたいな感じに強引に三項演算子とか論理比較演算子とか使って条件判断したりするの結構好きです。

このArrayを利用して定数イテレーションするのとかはArrayがコンストラクタでの生成時にはlengthのみが定義されていて添字のプロパティが定義されていない疎な配列を生成するからfillしたり*1とか好んで使います。

クソみたいな自分用コード書く分にはこれで良いんですが、人に読ませるに堪えないコードになるというか、読めない人増えるので分からない人向けに書けないのが厳しいですね。

たぶんこれ三項演算子で書いてるけど論理和演算子とかでうまいことできそうな感じがあるけど面倒だしおしまいです。

本当はというかこういうのも好きだけど、JavaScriptみたいなゆるい言語とかウェブ技術だけじゃなくてOSとかハードウェアとかもある程度学びたいなあという気持ちがあるので早いところモラトリアムあるうちにやりたいですね

*1:というかそもそもJavaScriptには純粋なデータ構造としての配列は無く全て連想配列になってる