別の配列に存在するすべての要素を 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 ) );