Hola
caricatos:
Qué pena que me perdiera ese hilo, seguro que habría podido aportar algo interesante. Está completísima la lista de funciones.
Para búsqueda por conversión a cadena que tú comentas ya se me había pasado por la cabeza muchas veces, y la verdad: Da muchos problemas, nunca he llegado a una versión que valga para todos los casos (si es con números es muy fácil). De hecho he fabricado esta función para el ejemplo (creo que
indexOf() es ligeramente más rápida que
test()):
Código PHP:
Array.prototype.in_array=function(elem){
//return new RegExp("#"+elem+"#","").test( "#"+this.join("#")+"#" );
return ("#"+this.join("#")+"#").indexOf("#"+elem+"#") > -1;
}
Para las búsquedas de antes me ha salido:
Código PHP:
Existe: false; he tardado 2944ms en buscarlo.
Existe: false; he tardado 3145ms en buscarlo.
Existe: false; he tardado 3064ms en buscarlo.
Existe: false; he tardado 3045ms en buscarlo.
Existe: false; he tardado 3034ms en buscarlo.
Existe: false; he tardado 3185ms en buscarlo.
Así que funciona, pero sigue siendo un poco lento...
He leido los dos post por encima, no sé si faltan dos funciones que echo de menos:
array1.esIgual(array2); que devuelve true si cada elemento del
array1 es igual al correspondiente de
array2; y
array1.copia(); que en algún script he necesitado hacer alguna copia de un array para hacer cambios sin tocar el original, o para entregar a una función un duplicado. No me atrevo a revivir el hilo
Lo postearé aquí:
Código PHP:
Array.prototype.esIgual = function(arr2) {
if( this.length === arr2.length ) {
for(var i=0; i<arr2.length; i++)
if( this[i] !== arr2[i] )
return false;
return true;
}
else return false;
}
Array.prototype.copia = function() {
return [].concat(this);
}
Las he hecho de cabeza, espero que estén bien.
Un saludo