No trabajo con librerías prefrabricadas, pero en proyectos grandes suelo reutilizar las mismas funciones:
Código PHP:
/*
WALK: Sirve para recorrer todas las posiciones del array, y aplicarles una función.
-funcionaplicada: Se ejecuta la funcion pasándole por argumento la posición del array, y su índice
si funcionaplicada devuelve true el bucle se para
WALK siempre devuelve la posición en que ha finalizado el bucle a no ser que termine después de recorrer el Array (caso false).
*/
Array.prototype.walk = function( funcionaplicada ) {
for(var i=0, parar=false; i<this.length && !parar; i++ )
parar = funcionaplicada( this[i], i);
return (this.length==i)? false : (i-1);
}
/*
BUSCAR: Devuelve el índice donde se encuenta q en Array, y si no existe devuelve -1;
*/
Array.prototype.buscar = function(q) {
var dev = this.walk(function(elem) {
if( elem==q )
return true;
} );
if( this[dev]==q ) return dev;
else return -1;
}
/*
ELIMINAR: Renombramiento, más legible, más cómodo.
*/
Array.prototype.eliminar = function(x) {
this.splice(x,1);
}
/*
ELIMINAR CON VALOR: Busca un elemento por su valor y lo elimina.
true si ha eliminado algo
false si no ha modificado el array
*/
Array.prototype.eliminarPorValor = function(valor) {
var elIndice = this.buscar(valor);
this.eliminar(elIndice);
}
Así podemos hacer las cosas más legibles:
Código PHP:
var miArray = ["perro", "casa", "coche", "avión"];
e("Longitud del array: "+miArray.length+"; Contenido: "+miArray);
e("Elimino 'coche'");
miArray.eliminarPorValor("coche");
e("Longitud del array: "+miArray.length+"; Contenido: "+miArray);
Cita:
Iniciado por output Longitud del array: 4; Contenido: perro,casa,coche,avión
Elimino 'coche'
Longitud del array: 3; Contenido: perro,casa,avión
Y aquí no ha pasado nada
Es complicado, pero es que js no es que tenga tanto "repertorio" como php, tiene 4 cosillas, y mejorarlo es complejo porque depende del navegador del usuario, en última instancia casi de m$, y no suelen apuntar muy bien.
Un saludo