dogwood008の開発メモ!

最近のマイブームは機械学習, Ruby on Rails。中でも機械学習を使った金融商品の自動取引に興味があります。

【JavaScript】filterでfalsyな値を取り除くには、Array.prototype.filter(Boolean)で良い

要旨

['a', undefined, 1, null].filter(Boolean)
// => ['a', 1]

詳細

filter の構文は、次のようになっている。

let newArray = arr.filter(callback(element[, index, [array]])[, thisArg])

この時、 callbackBoolean を指定すると、 Boolean(element, index, array) が呼ばれることになる。

ここで、 Boolean のコンストラクタに着目する。 Boolean は引数を1つしか取らない。JSは、仮引数で定義された個数を超えて実引数として多く渡した場合、その値は無視される。

よって、各要素は Boolean(element) を評価した結果が callback として呼ばれ、 truthy or falsy が戻り値となる。

参考

developer.mozilla.org

developer.mozilla.org

teratail.com