JavaScript: 配列から null、undefined、空文字を削除する
JavaScript で、配列から「null」や「undefined」、 「"" 空文字」が入った要素を削除する処理を紹介します。
ループを使う方法と、filter() メソッドを使う方法を紹介します。
ループを使って削除する
ループ(for文)を使って削除する場合は、 次のようになります。
let arr = [1, 2, 3, 4, 5, null, undefined, 0, "", false];
for (let i = 0; i < arr.length; i++){
if (arr[i] === null || arr[i] === undefined || arr[i] === ""){
arr.splice(i, 1); // 削除
if (i > 0) i--;
}
}
console.log(arr); // Array [ 1, 2, 3, 4, 5, 0, false ]
「null・undefined・空文字」以外にも削除したい値があれば、条件式に加えてください。
または削除したくない値があれば、条件式からはずしてください。
filter() メソッドを使って削除する
filter() メソッドを使ってnull・undefined・空文字を削除する場合は、 次のように記述します。
let arr = [1, 2, 3, 4, 5, null, undefined, 0, "", false];
let new_arr = arr.filter(function(x){
return !(x === null || x === undefined || x === "");
})
console.log(new_arr); // Array [ 1, 2, 3, 4, 5, 0, false ]
filterメソッドのコールバック関数の戻り値は、 要素を残す場合はTrue、削除する場合はfalseなので、return分は
return !(x === null || x === undefined || x === "");
のように「!(論理否定演算子)」を使って記述します。
falsy な値を削除する場合
falsy(false とみなされる値)をすべて削除していいなら、 シンプルに次のように記述できます。
let arr = [1, 2, 3, 4, 5, null, undefined, 0, "", false];
let new_arr = arr.filter(Boolean);
console.log(new_arr); // Array [ 1, 2, 3, 4, 5 ]
注意点として、この場合は null、undefined、空文字以外にも削除される値があることに 注意してください。
falseと見なされる値は次の通りです。
- null
- undefided
- “” 空文字
- 数値の 0
- NaN