Cita:
Iniciado por alvlin 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 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 m = arrayTxt.match(re); // [0]:original; [1]:n elementos;
alert( m[1].split("::").length-1 ); // 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.