Estoy buscando una forma eficiente de eliminar todos los elementos de una matriz de JavaScript si están presentes en otra matriz.
// If I have this array:
var myArray = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
// and this one:
var toRemove = ['b', 'c', 'g'];
Quiero operar en myArray para dejarlo en este estado: ['a', 'd', 'e', 'f']
Con jQuery, estoy usando grep()y inArray(), que funciona bien:
myArray = $.grep(myArray, function(value) {
return $.inArray(value, toRemove) < 0;
});
¿Existe una manera pura de javascript para hacer esto sin bucles y empalmes?
.filter(). En su lugar, usarás forbucles. Puede evitar .splice()si no es necesario mantener el pedido original. O bien, hay formas de hacerlo .splice()más eficiente si cree que habrá muchos elementos para eliminar.