Estoy buscando un buen algoritmo para obtener todos los elementos en una matriz que no son elementos en otra matriz. Así que dado estas matrices:Algoritmo de Javascript para encontrar elementos en la matriz que no están en otra matriz
var x = ["a","b","c","t"];
var y = ["d","a","t","e","g"];
Quiero terminar con esta matriz:
var z = ["d","e","g"];
estoy usando jQuery, para que pueda tomar ventaja de $.each()
y $.inArray()
. Esta es la solución que se me ocurrió, pero parece que debería haber una mejor manera.
// goal is to get rid of values in y if they exist in x
var x = ["a","b","c","t"];
var y = ["d","a","t","e","g"];
var z = [];
$.each(y, function(idx, value){
if ($.inArray(value,x) == -1) {
z.push(value);
}
});
alert(z); // should be ["d","e","g"]
Aquí está el code in action. ¿Algunas ideas?
hmm, así mi situación tiene objetos en mis arreglos, no sólo cadenas simples. Puse cadenas en mi pregunta para simplificar las cosas. No estoy seguro de que tu solución funcione. – Tauren
El nombre grep puede ser engañoso. Realmente no tiene nada que ver con cadenas. Simplemente toma un predicado. Otros idiomas llaman al mismo filtro. Hice una [demo] (http://jsfiddle.net/xBDz3/6/). –
guau, después de una prueba rápida, parece que funciona. El comando grep es engañoso, ya que supongo que funcionaría en texto como el comando Unix. Haré algunas pruebas más. – Tauren