0から目指すWebマスター Web制作に関する備忘録
検索

JavaScript

配列から値で判別して要素を削除する

配列の「値」で判別して要素を削除する場合、 spliceメソッドやsliceメソッドでは「値」ではなく「何番目」かでの処理をするためできない。shiftメソッドやpopメソッドは論外である。

filterメソッド

たとえば、[18, 9, 15, 9, 9, 5, 4, 1, 11] という配列から、要素の値が「9」もしくは「4」を削除する場合、filterメソッドを使います。

var sample = [18, 9, 15, 9, 9, 5, 4, 1, 11];
var del_sample = [9, 4];
sample = ary_delete(sample, del_sample);
// 実行結果  [18, 15, 5, 1, 11];
/**
* 配列の削除(値で判別)
* 第一引数:ary 削除前の配列
* 第二引数:del_ary aryから削除する配列
*/
function ary_delete(ary, del_ary) {
ary = ary.filter(function(v){
var check = true;
for (var i in del_ary) {
if (v == del_ary[i]) {
check = false;
break;
}
}
return check;
});
return ary;
}

注意事項

filterメソッドは、JavaScript 1.6以降で対応可能となるそうです。最近のモダンブラウザでは問題ないですが、たとえばIE8以下がターゲットブラウザに含まれる場合は、filterメソッドは機能しないので別対応が必要になります。