TL;DR
const array = [0, 1, 2, "", undefined, null, NaN, "hoge"]
array.filter(Boolean) // => [1, 2, "hoge"]
詳細
Array.prototype.filter
を使用しています。引数に入るコールバックの処理に対して true を返す値のみに絞る関数です。
例えば、以下のように偶数である値のみを抽出したいときなんかにも使えます。
[...Array(10).keys()].filter(n => n % 2 == 0) // => [0, 2, 4, 6, 8]
上記の例の場合は偶数かどうかの処理をはさみましたが、ここに Boolean
を入れると Boolean()
を実行してくれます。関数呼び出しですね。Boolean()
を実行すると値の真偽を判定してくれます。Boolean の仕様によると、以下の値はすべて false
と判定されるようです。
false と判定される値
[0, -0, null, false, NaN, undefined, ""]
If the value is omitted or is 0, -0, null, false, NaN, undefined, or the empty string (""), the object has an initial value of false.
備考
蛇足ですが、new Boolean()
でオブジェクトを作るときは false
と判定された値を持つ Boolean オブジェクトも生成されるようです。しかも if 文とかで判定するときも常に true が返ってきます。不思議。
const bool = new Boolean(false)
if(bool) console.log("false is true!") // => "false is true!"