Javascript数组:删除另一个数组中包含的所有元素

我正在寻找一种有效的方法来删除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’]

使用jQuery,我使用grep()和inArray(),它工作得很好:

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

有没有一个纯粹的javascript的方式来做这个没有循环和拼接?

最佳答案
使用Array.filter()方法:

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

作为Array.includes()的浏览器支持的小改进已经增加:

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

转载注明原文:Javascript数组:删除另一个数组中包含的所有元素 - 代码日志