Ver Mensaje Individual
  #9 (permalink)  
Antiguo 03/10/2008, 06:13
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 3 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.