JavaScript - 配列から空の要素を削除するにはfilter()が簡単

JavaScriptで、配列から空要素を削除する場合は、 filter()メソッドを使うと便利です。

filter()メソッドは、配列から特定条件の要素を抽出・削除するためのメソッドです。

filter()を使わない場合は、ループを使って1つずつチェックする方法もあります。

filter()を使った空要素の削除

filter()メソッドを使う場合は、次のようなコードとなります。


var arr = ['a', '', 'b', '', 'c'];

console.log(arr); // Array(5) [ "a", "", "b", "", "c" ]

var arr2 = arr.filter(function(s){return s !== '';});

console.log(arr2); // Array(3) [ "a", "b", "c" ]

1行のコードで空要素が削除できるので便利です。

配列をループさせて空要素を削除

filter()を使わない場合は、 次のように配列をループさせて1つずつチェックします。

var arr = ['a', '', 'b', '', 'c'];

console.log(arr); // Array(5) [ "a", "", "b", "", "c" ]

var arr2 = [];

for (var i = 0; i < arr.length; i++){
	if (arr[i] !== ''){
		arr2.push(arr[i]);
	}
}

console.log(arr2); // Array(3) [ "a", "b", "c" ]

ループ+splice() を使って削除

上の例では別の配列にpush()して新たな配列を作りましたが、

別の配列を作らずに、splice()メソッドを使って要素を削除する方法もあります。

splice()メソッドは、要素を削除して要素間を詰めます。

同じ削除でもdelete演算子を使うと、要素間を詰めないので注意が必要です。

以下はループ+splice()メソッドを使ったサンプルコードです。

配列の最後から先頭へとループを回しています。


var arr = ['a', '', 'b', '', 'c'];

console.log(arr); // Array(5) [ "a", "", "b", "", "c" ]

for (var i = arr.length - 1; i >= 0  ; i--){
	if (arr[i] === ''){
		arr.splice(i, 1); // 1つ削除
	}
}

console.log(arr); // Array(3) [ "a", "b", "c" ]