Creo que realmente significa que escribir:
<script type="text/javascript">
var a = ['a','b','c','d','e'];
var b = ['a','d','e','c'];
</script>
En cualquier caso, puede ordenar las matrices y obtener los valores de una que no están en el otro y viceversa, a continuación, concatenar los dos conjuntos en uno. Parece que tiene muchas opciones, así que aquí hay una buena versión básica de JavaScript que debería funcionar en la mayoría de los navegadores. El uso de nuevas funciones de los navegadores más recientes seguramente fallará en los navegadores más antiguos.
// Compares a to b. Returns all the elements in a that are not in b
// If c provided, add unique elements to c
function getUnique(a, b, c) {
var c = c || [];
var ta = a.slice().sort();
var tb = b.slice().sort();
var x, y, found = false;
for (var i=0, iLen=ta.length; i<iLen; i++) {
x = ta.shift();
for (var j=0; j<tb.length && !found; j++) { // j.length changes each loop
if (tb[j] == x) {
tb.splice(j,1); // Remove match from b
found = true;
}
}
if (!found) {
c.push(x); // If no match found, store in result
}
found = false;
}
return c;
}
var a = ['a','b','d'];
var b = ['b','e'];
var d = getUnique(a, b);
alert(d);
var c = getUnique(b,a,d);
alert(d);
Pero su comentario sobre la primera respuesta indica que desea que los elementos que son comunes a ambas matrices, lo que es más simple:
function getCommon(a, b) {
var c = [];
var ta = a.slice().sort();
var tb = b.slice().sort();
var t, found;
for (var i=0, iLen=ta.length; i<iLen; i++) {
t = ta[i];
found = false;
for (var j=0, jLen=tb.length; j<jLen && !found; j++) {
if (t == tb[j]) {
c.push(tb.splice(j,1));
found = true;
}
}
}
return c;
}
alert(getCommon(a, b));
Es necesario trabajar decidir qué hacer con los duplicados. En el primer caso, los duplicados se tratarán como únicos si no hay un duplicado en la otra matriz.En lo anterior, los duplicados no importan a menos que estén duplicados en ambas matrices.
@alex Gracias por responder, pero obtengo la consola en undefined .. en el ejemplo de Jsfiddle .., utilicé Jquery 1.3.2 .min.js en mi aplicación ... Es de otra manera ... –
@Abhishek Eso solo significa que no tienes un objeto de consola. [Pruebe esto] (http://jsfiddle.net/alexdickson/QDhFD/). – alex
@alex Muchas gracias ... –