Es un problema que se solventa fácilmente si utilizamos un buscador...
Para borrar elementos de un array a mi personalmente el método del operador
delete no me convence, porque pasa lo siguiente:
Código PHP:
var miArr = ["perro", "casa", "coche", "avión"];
e("Longitud del array: "+miArr.length+"; Contenido: "+miArr);
delete miArr[1];
e("Longitud del array: "+miArr.length+"; Contenido: "+miArr);
Cita:
Iniciado por output Longitud del array: 4; Contenido: perro,casa,coche,avión
Longitud del array: 4; Contenido: perro,,coche,avión
La longitud del array no se modifica! Esto es, hay un elemento sin valor, cuyo valor es
undefined, y si hiciéramos un bucle desde
0 hasta
miArr.length tendríamos ese valor
undefined ahí.
Para recorrerlo he propuésto tres métodos:
Código PHP:
// En un bucle for normal:
e("miArr:");
for(var i=0; i<miArr.length; i++) {
e("miArr["+i+"] = "+miArr[i]);
}
e("-----");
// En un bucle for peor hecho:
e("miArr:");
for(var i=0; (elemento = miArr[i]); i++) {
e("miArr["+i+"] = "+miArr[i]);
}
e("-----");
// En un for..in
e("miArr:")
for(var i in miArr) {
e("miArr["+i+"] = "+miArr[i]);
}
Cita:
Iniciado por output miArr:
miArr[0] = perro
miArr[1] = undefined
miArr[2] = coche
miArr[3] = avión
-----
miArr:
miArr[0] = perro
-----
miArr:
miArr[0] = perro
miArr[2] = coche
miArr[3] = avión
El primero es un poco chapuza, el segundo es el desastre total y el último es el que "nos vale", siempre y cuando no utilicemos el
prototype para añadirle funcionalidad:
Código PHP:
Array.prototype.alertaUnoPorUno = function() {
for(var i=0; i<this.length; i++) {
alert( this[i] );
}
}
// En un for..in
e("miArr:")
for(var i in miArr) {
e("miArr["+i+"] = "+miArr[i]);
}
Cita:
Iniciado por output miArr:
miArr[alertaUnoPorUno] = function() { for(var i=0; i<this.length; i++) {
alert( this[i] ); }}
miArr[0] = perro
miArr[2] = coche
miArr[3] = avión
Habría que tener cuidado porque aquí también nos recorre las funciones declaradas para el objeto... es un poco problemático.
La solución que propongo es
splice(). Si colocamos
miArr.splice(x,1) nos borrará el elemento
x del array. Lo peligroso es que modifica la longitud del array, y para utilizarlo en bucles tenemos que tener cuidado.
Cita:
Iniciado por chefnelone pero para esto PRIMERO necesitaria saber como hago para saber que posicion tiene un elemento ?
Para saber qué posición tiene un valor ya dado tendrías que crearte una función
buscar() para un array que te devuelva la posición que buscas, como tantas otras cosas, no está implementada por defecto
Un saludo.