我正在寻找一种有效的方法来从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']
['a', 'd', 'e', 'f']
使用jQuery,我使用grep()和inArray(),效果很好:
grep()
inArray()
myArray = $.grep(myArray, function(value) { return $.inArray(value, toRemove) < 0; });
有没有一种纯Javascript方式无需循环和拼接的方法?
使用Array.filter()方法:
Array.filter()
myArray = myArray.filter( function( el ) { return toRemove.indexOf( el ) < 0; } );
小改进,因为对浏览器的支持Array.includes()增加了:
Array.includes()
myArray = myArray.filter( function( el ) { return !toRemove.includes( el ); } );
使用arrow functions:下一个适应:
myArray = myArray.filter( ( el ) => !toRemove.includes( el ) );