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 for
bucles. 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.