• Domingo 17 de Noviembre de 2024, 20:43

Autor Tema:  comparacion de arrays  (Leído 6431 veces)

sulvior

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
comparacion de arrays
« en: Miércoles 29 de Junio de 2011, 20:16 »
0
Hola, tengo una duda con un codigo en javascript, tengo 2 arrays a=["f","a","c","e"] y b=["a","b","c","d","e","f"]; lo que necesito es comparar ambos array y que en un tercer array me guarde los elementos que no se repiten en este caso seria "b" y "d".
el codigo que tengo para esto es:
var a = ["f","a","c","e"]
var b = ["a","b","c","d","e","f"]
var c = new Array;
inicio: for(i=0; i<a.length; i++){
      for(j=0; j<b.length; j++){
      if(a==b[j]){                           
         continue inicio;                     
         }                                    
      }
c[c.length] = b[j];
   
}

pero no me funciona no me guarda ningun valor :hitcomp: , graciass..

fonsi3

  • Miembro activo
  • **
  • Mensajes: 95
    • Ver Perfil
Re: comparacion de arrays
« Respuesta #1 en: Sábado 2 de Julio de 2011, 06:58 »
0
Lo que podrias hacer es:
1) obtienes un elemento de "a"
2) con ese elemento, lo buscas en "b"
3) si lo encuentras en "b", osea que existe en "b", lo quitas de "b", para borrar un elemento de un array en JS debes usar la funcion "splice", de esta forma:
array.splice( posicionElemento, cantidadDeElementosABorrarDesdeAqui ) => b.splice( j, 1 )
4) si no lo encuentras no pasa nada, la onda es quitar en "b" los elementos que estan en "a"

Por ejemplo algo asi:
Código: Text
  1.     var a = [ 'f', 'a', 'c', 'e' ],
  2.         b = [ 'a', 'b', 'c', 'd', 'e', 'f' ],
  3.         letter = '';
  4.        
  5.     for( var i = 0, lengthA = a.length; i < lengthA; i+=1 ) {
  6.        
  7.         letter = a[i];
  8.         for( var j = 0, lengthB = b.length; j < lengthB; j+=1 ) {
  9.        
  10.             if( b[j] == letter ) {
  11.                 b.splice( j, 1 );
  12.             }
  13.            
  14.         }
  15.  
  16.     }
  17.  
El "incoveniente" en esta solucion es que "b" pasara a ser el resultado, osea lo que "b" originalmente contenia, se pierde, y solo le quedaran los elementos que no se repiten.

Aqui otra implementacion, pero especificamente enfocada en JS:
Código: Text
  1.     var pos = 0;
  2.     a.forEach( function( element ) {
  3.         while( ( pos = b.indexOf( element ) ) >= 0 ) {
  4.             b.splice( pos, 1 )
  5.         }
  6.     } );
  7.  
Aqui hacemos uso de la funcion "array.indexOf()", cual sirve para saber en que posicion un elemento se encuentra ubicado en tal array. Ademas usamos el metodo "forEach" que invoca una funcion por cada elemento presente en este caso en "a", es una forma mas comoda de recorrer un array sin necesidad de usar un for loop.
Cha che chi cho chu buenichimo!
http://mensoscripts.com

Links de interes: HTML | CCS2~CSS* | PHP
Indispensables tools]Firebug[/url] | Web Developer | FireFTP | Live Headers