小编典典

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

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方式无需循环和拼接的方法?


阅读 403

收藏
2020-05-01

共1个答案

小编典典

使用Array.filter()方法:

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

小改进,因为对浏览器的支持Array.includes()增加了:

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

使用arrow functions:下一个适应:

myArray = myArray.filter( ( el ) => !toRemove.includes( el ) );
2020-05-01