Foros del Web » Programando para Internet » Javascript »

encontrar un elemento en un array

Estas en el tema de encontrar un elemento en un array en el foro de Javascript en Foros del Web. hola a todos tengo el siguinte problema estoi haciendo la siguiente funcion para validar matriculas de coche. function valida_matricula(matricula){ var reg = new RegExp ("^(([0-9]{4}[b,c,d,f,g,h,j,k,l,m,n,o,p,r,s,t,v,w]{3})|([a-zA-Z]{1,2}[0-9]{4}[a-zA-z]{2}))$","g");//expresion ...
  #1 (permalink)  
Antiguo 02/10/2008, 08:11
 
Fecha de Ingreso: marzo-2006
Mensajes: 19
Antigüedad: 18 años, 10 meses
Puntos: 2
Pregunta encontrar un elemento en un array

hola a todos tengo el siguinte problema estoi haciendo la siguiente funcion para validar matriculas de coche.


function valida_matricula(matricula){

var reg = new RegExp ("^(([0-9]{4}[b,c,d,f,g,h,j,k,l,m,n,o,p,r,s,t,v,w]{3})|([a-zA-Z]{1,2}[0-9]{4}[a-zA-z]{2}))$","g");//expresion regular para las 2 matriculas

provincias = new Array ("VI","AB ","A","AL","AV","BA","AV","IB","PM","B","BU","CC", "CA","CS","CE","CR","CO","C","CU","GI","GE","GR"," GU","SS","H","HU","J","LE","L","LO","LU","M","ML", "MU","NA","OR","OU","O","P","GC","PO","SA","TF","S ","SG","SE","SO","T","TE","TO","V","VA","BI","ZA", "Z");//array de provincias para las matriculas antiguas

var respu = true;


remplazo=matricula.replace("-","");
remplazo2=remplazo.replace("-","");//se remplazan los guiones por nada


if(matricula != '' ){//si la matricula no viene vacia

if (reg.test(matricula) == 0) {//si es erronea

matricula=matricula.toUpperCase();//cambia a mayusculas

primer_caracter = matricula.substring(0,1);

if(isNaN(primer_caracter)){//valida si lo primero es letra o numero

//alert("no es un numero");//antigua matricula

provin_matri=remplazo2.substring(0,2);//2 primeros caracteres de la matricula
provin_matri_segunda_letra=provin_matri.substring( 1,2);//segundo caracter de la matricula

//alert(provin_matri+" "+provin_matri_segunda_letra);


if(isNaN(provin_matri_segunda_letra)){

//alert("la segunda letra no es numero");


for(i=0;i< provincias.length;i++) {//recorro el array de provincias para ver si la provincia que han metido es correcta

if(provin_matri == provincias[i]){

alert("encontrado"+" "+i)


}

}




}else{

//alert("la segunda letra es numero");

}





}else{


alert("es un numero");//nueva matricula


}

respu = false;

}

}


return respu;

}






en esta linea quisiera saber alguna funcion que tenga javascript o como se puede hacer para encontrar el elemento que quiero en el array provincias.


for(i=0;i< provincias.length;i++) {//recorro el array de provincias para ver si la provincia que han metido es correcta

if(provin_matri == provincias[i]){

alert("encontrado"+" "+i)


}

}



muchas gracias un saludo
  #2 (permalink)  
Antiguo 02/10/2008, 09:22
 
Fecha de Ingreso: julio-2008
Mensajes: 28
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: encontrar un elemento en un array

Código HTML:
<html>
<script language="javascript">
function bqprov(prov){
	for(i=0;i< provincias.length;i++) {
		if(prov == provincias[i]){
			alert("Encontrada la Provincia: "+prov+"\nEn la posicion: "+i);
		} 
	}
}
</script>
</html> 
Aclarame algo, ¿Eres muy novato en Programacion?
  #3 (permalink)  
Antiguo 02/10/2008, 09:27
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 8 meses
Puntos: 839
Exclamación Respuesta: encontrar un elemento en un array

Hola cm_vargas. Si te fijas, es exactamente eso lo que el usuario está haciendo. Si he entendido bien lo que ha preguntado es si hay un método de los array que lo haga directamente, yo personalmente no conozco pero según entendí fue eso lo que preguntó.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.

Última edición por David; 02/10/2008 a las 10:52
  #4 (permalink)  
Antiguo 02/10/2008, 10:46
 
Fecha de Ingreso: julio-2008
Mensajes: 28
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: encontrar un elemento en un array

Que yo sepa no existe un metodo reservado del lenguaje javascript que ejecute una busqueda en un vector y devuelva algun valor.
En cuanto a mi respuesta, lo que pasa es que yo tambien me di cuenta que ya estaba utilizando un ciclo para explorar el vector y verificar si se encontraba o no la cadena de caracteres en dicho vector. Me base entonces en lo que el pidio y en lo que yo deduje, el pidio lo siguiente:"alguna funcion que tenga javascript o como se puede hacer para encontrar el elemento que quiero en el array provincias", y lo que deduje fue que el mismo no entendia que hacia el codigo que esta utilizando, ya que tenia un ciclo que hacia lo que el estaba pidiendo.
Por eso le pedi que me aclarara si era muy novato en programacion para hacerle unas sugerencias y mejorar un poco ese codigo, que no esta malo pero se puede optimizar un poco mas.
  #5 (permalink)  
Antiguo 02/10/2008, 12:49
 
Fecha de Ingreso: julio-2006
Ubicación: Argentina
Mensajes: 35
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: encontrar un elemento en un array

Igual Bargas existe dicha funcion, hay q buscar nomas
  #6 (permalink)  
Antiguo 02/10/2008, 14:24
 
Fecha de Ingreso: julio-2008
Mensajes: 28
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: encontrar un elemento en un array

Aportemos soluciones señores. Creo que no hacemos nada agregando comentarios sin base. El amigo max_damage no quiere saber si existe o no el metodo, quiere el metodo o alguna solucion. Yo exprese la mia, no es la unica y lo sabemos, por lo tanto caben todas las soluciones posibles para ese caso.
  #7 (permalink)  
Antiguo 02/10/2008, 14:37
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: encontrar un elemento en un array

Esperemos a ver qué contesta max_damage.
Lo cierto es que hay algunos navegadores que implementan un método indexOf para los vectores, pero eso no forma parte del Javascript "normal".

Si la solución que da cm_vargas no sirve, la única opción es implementar un método como indexOf. Aunque para usarlo una sola vez, parece excesivo.


Saludos.
  #8 (permalink)  
Antiguo 03/10/2008, 00:19
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 9 meses
Puntos: 1284
Respuesta: encontrar un elemento en un array

Hola:

En vez de crear un array, podrías crear una expresión regular... o ya que tienes el array, convertirlo...

Código:
_provincias = new RegExp("^(" + provincias.join("|") + ")$");
Luego sería:
Código:
alert(_provincias.test(provin_matri) ? "provincia encontrada" : "provincia inexistente");
No sé si la expresión que se gebera de esa manera es la mejor

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #9 (permalink)  
Antiguo 03/10/2008, 06:13
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 2 meses
Puntos: 45
Respuesta: encontrar un elemento en un array

Cita:
Iniciado por alvlin Ver Mensaje
Lo cierto es que hay algunos navegadores que implementan un método indexOf para los vectores, pero eso no forma parte del Javascript "normal".
Es de javascript "normal", pero de la versión 1.6, no implementada en IE6, pero si en FF3.

Cita:
Iniciado por caricatos Ver Mensaje
No sé si la expresión que se gebera de esa manera es la mejor
Es mucho más rápido buscar en una cadena que en un array, así que muchas veces sí merece la pena transformar el array en cadena (siempre que podamos). Y luego tendríamos que utilizar expresiones regulares (que tienen buen rendimiento) para encontrar el elemento en cuestión en el array.

Podríamos hacer uso del rápido indexOf si existiese, y si no hacer una especie de simulación (o crearlo, o buscar por fuerza bruta). La solución que propongo es óptima para hacer una sola búsqueda en un array inmenso:
Código PHP:
var array = ["uno""dos""tres""cuatro""cinco"];

var 
elemento "cinco";
if( 
typeof Array.prototype.indexOf !== "function") {            // si no tenemos disponible indexOf lo simulamos
    
var arrayTxt = array.join("::");                            // unión de todo el array
    
var re = new RegExp("^(([^(::)]+::)*)"+elemento"");        // expresión: n elementos y luego el nuestro
    
var arrayTxt.match(re);                                    // [0]:original; [1]:n elementos; 
    
alertm[1].split("::").length-);                            // Contamos cuantos elementos hay en [1]
}
else {
    
alert( array.indexOf(elemento) );

Si queremos hacer búsquedas de más elementos (automatizar la tarea) deberíamos guardar arrayTxt en una variable fija para no tener que crearla cada vez; pero creo que por lo demás se podría mantener.


Escribo por proponer algo diferente, hay muchísimos métodos implementados por la web para buscar un elemento en un array pero me ha parecido interesante plantear uno diferente válido para un ámbito concreto.

__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #10 (permalink)  
Antiguo 04/11/2009, 18:13
 
Fecha de Ingreso: marzo-2005
Ubicación: En chilito lindo
Mensajes: 19
Antigüedad: 19 años, 9 meses
Puntos: 1
Respuesta: encontrar un elemento en un array

Se que hace tiempo que se posteo esto, pero dejo la solucion para quien lo necesite que de seguro alguien lo requerirá

si tienes un array con datos y quieres saber la posicion :

var arr = new Array();
arr[0] = "uno";
arr[1] = "dos";
arr[2] = "tre";
arr[3] = "cuatro";

si quieres saber la posicion de "dos" solo debes preguntar con indexOf()

alert(arr.indexOf("dos"));

tendra como salida la posicion 1

si no encuentra el valor, devolvera -1

Espero les sirva.
saludos y larga vida al open source!!

biguitarman
  #11 (permalink)  
Antiguo 04/11/2009, 18:30
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 8 meses
Puntos: 1485
Respuesta: encontrar un elemento en un array

aprovecho antes que cierren el tema.
@biguitarman,
¿sabias que tecnicamente no existe dicho metodo en los array? considera por ejemplo iexplorer no tiene dicho metodo. por el momento es el unico navegador que no tiene dicho metodo de forma nativa. o bien no estoy seguro si ECMA-262 ya lo incluye aunque segun MDC desde la version javascript 1.6 existe dicho metodo. pero de nuevo, iexplorer no tiene dicho metodo.

edit @ 20:13,
vaya, que inutil soy... releyendo varios mensajes veo que ya lo habian mencionado...
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 04/11/2009 a las 19:13
  #12 (permalink)  
Antiguo 05/11/2009, 00:56
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 9 meses
Puntos: 1284
Respuesta: encontrar un elemento en un array

Cita:
Iniciado por zerokilled Ver Mensaje
aprovecho antes que cierren el tema.
...
Dicho y hecho.
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 01:36.