技術とかの雑なToday I Learnedメモ

JavaScript のクイズツイート

JavaScript のクイズツイート

こんなツイートが流れてきた。

とりあえず思いつきでやってみようと思って自分は以下のようなコードを書いた。

そのあとに引用 RT されているツイートを色々見てみて学びがあった。

n % 2 === 0 の部分

結果が 0 なら必然的に false になるので、 === 0 の部分がなくても書ける。

if 文の条件分岐で falsy な値をあまり使いたくないという思いがあり↑のように === 0 みたいな書き方で分岐させていたので抜けてました(言い訳)

Array.fill

[n, n, n] みたいに書くのって絶対冗長だし Array(3) したあとに push みたいなことできないかなと思っていたら、以下のような書き方があった。

const array2 = array1.flatMap(n => Array(n % 2 + 2).fill(n))

Array.fill(n) で配列の要素をすべて n にする。

これがぱっと思いつけるようになりたい……。

Array.from

Array.from() - JavaScript | MDN

Array.from() メソッドは、配列のようなオブジェクトや反復可能オブジェクトから、浅くコピーされた新しい Array インスタンスを生成します。

なるほど。

Array.from の第一引数に Array(n % 2 + 2) を入れて、第二引数(第一引数のすべての要素に適用される関数)で単に n を返す。

これは全然思いつかない。そもそも Array.from を使っているのを初めて見た気がする(普段使ったことがない)