別の配列に含まれるすべての要素を削除する [重複] 質問する

別の配列に含まれるすべての要素を削除する [重複] 質問する

別の配列に存在するすべての要素を JavaScript 配列から削除する効率的な方法を探しています。

// If I have this array:
var myArray = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];

// and this one:
var toRemove = ['b', 'c', 'g'];

myArray を操作して、次の状態のままにしておきます。['a', 'd', 'e', 'f']

grep()jQuery では、と を使用しておりinArray()、うまく動作します。

myArray = $.grep(myArray, function(value) {
    return $.inArray(value, toRemove) < 0;
});

ループやスプライシングなしでこれを行う純粋な JavaScript の方法はありますか?

ベストアンサー1

使用Array.filter()方法:

myArray = myArray.filter( function( el ) {
  return toRemove.indexOf( el ) < 0;
} );

ブラウザのサポートが少し改善されましたArray.includes()増加しました:

myArray = myArray.filter( function( el ) {
  return !toRemove.includes( el );
} );

次の適応矢印関数:

myArray = myArray.filter( ( el ) => !toRemove.includes( el ) );

おすすめ記事