///

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

wrote :

配列の「値」で判別して要素を削除する場合、 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メソッドは機能しないので別対応が必要になります。

川上 武範(かわかみ たけのり)
1975年生。シンプルシンプルデザイン代表兼Webクリエイター。たびのとWebサイト運営責任者。

企画からサイト設計、正しいマークアップを意識したWebサイト制作やユーザー視点の情報設計を得意としている。

シンプルシンプルデザイン
たびのと
twitter : たけたけ@OnlyTwo

メディア掲載
2016年10月25日 レバテックフリーランスの記事「自作Webサービス記事紹介まとめ」でサイト内の記事「Webサービス「たびのとTOKYO」を作ってみました」を紹介していただきました。