配列からfalsyな値を除外したいならArray.filter(Boolean)を使おう

JavaScript

公開日時:2024/07/13

Array.filterメソッドは配列をイテレートして各要素に指定したコールバック関数を適用してtrueのもののみで新しい配列を作成してくれるメソッド。

対してBooleanはコンストラクタ関数と呼ばれるものでGlobalにあらかじめ定義されている関数であり、値をboolean型に変換してくれる。

これらを組み合わせることで配列の各要素をbooleanで判定し、falsyな値を除外した新しい配列を作成することができる。

サンプル

const array = [0, 1, 'test', '', true, false, NaN, null, undefined, {}];
console.log(array.filter(Boolean)) // [1,'test',true,{}]

0,'',false,NaN,null,undefinedが除外されていることが確認できる。

注意点としては {} などは trueとして扱われるので場合によってはfilterの条件をより厳密にする必要がある。

ちなみに以下でも同じ意味になる。

array.filter(item=>Boolean(item))