Comunidad de diseño web y desarrollo en internet online

elementos repetido en un array !

Citar            
MensajeEscrito el 19 Abr 2006 01:08 pm
Una duda a ver si alguien me la puede aclarar, me parecio leer en la ayuda de macromendia una funcion que buscaba si habian elementos repetidos en un array y te devolvia un array sin estos (repetidos quiero decir), a alguien le suena,

bueno como podran ver por mi pregunta saben cual es mi problema alguien sabria por donde empezar a tirar GRACIAS.

Por sulfuric

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Abr 2006 11:40 am
No existe una función definida como tal.
Lo que pasa es que si haces sort por index y se encuentra elementos iguales el index devuelto para esos elementos no tiene una ordenación definida.
Para eliminar los elementos repetidos tendrás que crearte una funcion que lo haga.

Código :

a=[3,4,5,2,2,3,6,7,1,1,8,2,3,8,5,5,3,1,"amigo","amiga","amigo","enemigo"]

function elim_rep(b){
   n = 0; b.sort();
   while(n < b.length){b[n+1] == b[n] ? b.splice(n,1) : n++ }
   return b
}

trace (elim_rep(a)); //1,2,3,4,5,6,7,8,amiga,amigo,enemigo

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

msie
Citar            
MensajeEscrito el 20 Abr 2006 02:24 pm
manteniendo la integridad del arreglo:

Código :

a=[3,4,5,2,2,3,6,7,1,1,8,2,3,8,5,5,3,1,"amigo","amiga","amigo","enemigo"]


function inArray(needle, subject:Array):Boolean{
   for (var i in subject){
      if (subject[i]==needle){
         return true;
      }
   }
   return false;
}

function arrayUnique(subject:Array){
   var total:Number = subject.length;
   var newArray:Array = new Array();
   for (i:Number =0; i<total; i++){
      if (!inArray(subject[i],newArray)){
         newArray.push(subject[i]);
      }
   }
   return newArray;
}
trace (arrayUnique(a));


saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 20 Abr 2006 04:08 pm
Gracias por las funciones, he estado probando probando las 2 la primera me da como resultado el mismo array, y la segunda nada ose a un array vacio voy a probar mas a ver si lo puedo solucionar podria ser por que mi array es multidimensional?? es decir dentro de cada elemento hay 3 para añadir datos a este array lo hago priresultados.push([nombre,apellidos,edad]) lo q quiero es q si se añade dos veces Pablo Marco de 28, priresultados.push(["Pablo","Marco","28"]), en mi nuevo array solo aparezca una vez, Gracias de nuevo Un Saludo.

P.D maikel en tu funcion no entiendo for (var i in subject){ esto esta asi bien (supongo q si :p) nunca lo habia visto asi o he de cambiar algo???

Por sulfuric

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Abr 2006 05:11 pm
mmm, si es eso, que el array contiene elementos Array... estoy de paso, tengo cosas que hacer... si aun no has resuelto de aqui a unas 10 horas te posteo una solucion...

y lo de for in, sirve para recorrer todas las propiedades un objeto, o un array, pero tienes que tener en cuenta que si es un array el for in, va desde el ultimo elemento al primero ;)

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 20 Abr 2006 11:03 pm
Creí que era una cosita sencilla :( :(
Para un array multitipo multidimension prueba esta. Super rápida.


Código :

Array.prototype.eliminaDuplicados = function() { 
   var obj = {}, i = this.length, j = 0, arr = [], t, tp, o_arr = [], o; 
   while (i--) { 
   tp=typeof (t=this[i]); 
   if(tp=="number" || tp=="string") {obj[t]=t} 
   else if (!t.$$$){o_arr.push(t),t.$$$=true}} 
   for (i in obj) {arr.push(obj[i])} 
   if (i=o_arr.length) {while (i--) {
      delete (o=o_arr[i]).$$$, arr.push(o)}} 
   return arr; 
};

y llamada:

Código :

un_array.eliminaDuplicados();

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

msie
Citar            
MensajeEscrito el 21 Abr 2006 09:06 am
Por ahora no he podido, voy a segui con esto si consigo algo lo posteo Un Saludo, el ultimo prototipe tp me va bien gracias por la ayuda....

Por sulfuric

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Abr 2006 05:46 pm
He encontrado otros prototypes pero nada

ejemplo:

Array.prototype.unique=function(){
var z,y=this.length,c=false,a=[];
while (y--){
z=0;
while(z<y){
if(this[y]==this[z]){
c=true;
break;
}
z++;
}
if (!c) a[a.length]=this[y];
else c=false;
}
return a;
}

para llamarlo arraysinrepetidos = arrayconrepetidos.unique();

La llamada es correcta no??, pero no me va tampoco bueno a seguir dandole vueltas si alguien sabria aconsejarme un poco por donde tirar GRACIAS. Un Saludo.

Por sulfuric

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Mar 2012 06:17 am
Veo que este post es viejo, pero voy a intentar, necesito saber hacer lo siguiente,

Comparar los valores de un mismo array, si hay repetidos que lógicamente se eliminen, pero este array trabaja en conjunto con otro y necesito que en este otro los valores de las mismas posiciones se sumen.


a=[amigo, amigo, perro, gato, perro, gato, gato]
b=[3,4,5,6,7,8,9]

Ahora necesito que me quede así luego de eliminar en el array A y sumar en el array B

a=[amigo, gato, perro]
b=[7,12,23]

No se si logro explicar lo que necesito, pero creo que con el ejemplo esta claro.

ahh! trabajo con AS2.

Gracias!

Por PX10

70 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.