要旨
['a', undefined, 1, null].filter(Boolean) // => ['a', 1]
詳細
filter
の構文は、次のようになっている。
let newArray = arr.filter(callback(element[, index, [array]])[, thisArg])
この時、 callback
に Boolean
を指定すると、 Boolean(element, index, array)
が呼ばれることになる。
ここで、 Boolean
のコンストラクタに着目する。 Boolean
は引数を1つしか取らない。JSは、仮引数で定義された個数を超えて実引数として多く渡した場合、その値は無視される。
よって、各要素は Boolean(element)
を評価した結果が callback
として呼ばれ、 truthy or falsy が戻り値となる。