1. ホーム
  2. javascript

[解決済み] 配列から未定義の値を削除する

2023-07-12 03:19:39

質問

ある状況下で、以下のようなことが起こるかもしれない。 undefined または一般に ファルシー の値を使用することができます。例えば、データベースやHTML構造のような未知のソースからデータを読み取り、充填する場合です。たとえば

var data = [42, 21, undefined, 50, 40, undefined, 9]

このような配列をループして要素を操作するときに問題が発生する可能性があるため、ベストプラクティスとして、このような配列から undefined (偽の値)を削除する最良の方法は何でしょうか?

どのように解決するのですか?

使用方法 Array.prototype.filter を使うのは当然かもしれません。そこで、未定義の値だけを削除するために

var data = [42, 21, undefined, 50, 40, undefined, 9];

data = data.filter(function( element ) {
   return element !== undefined;
});

もし、0 や null などの偽の値をフィルタリングしたい場合は、以下のようにします。 return !!element; を使うことができます。

しかし、もう少しエレガントな方法があります。 Boolean コンストラクタ関数にそれぞれ Number のコンストラクタ関数から .filter :

data = data.filter( Number );

この例では、一般に、すべての ファルシー の値を削除するには

data = data.filter( Boolean );


のため Boolean() のコンストラクタは true 真実性 の値と false のいずれかに ファルシー の値であれば、これはとてもすてきなオプションです。