¿Cómo elimino la clave 'barra' de una matriz para que la 'barra' no aparezca en
for(key in foo){alert(key);}
¿Cómo elimino la clave 'barra' de una matriz para que la 'barra' no aparezca en
for(key in foo){alert(key);}
Respuestas:
No use eliminar ya que no eliminará un elemento de una matriz, solo lo configurará como indefinido, lo que no se reflejará correctamente en la longitud de la matriz.
Si conoce la clave, debe usar empalme, es decir
myArray.splice(key, 1);
Para alguien en la posición de Steven puedes probar algo como esto:
for (var key in myArray) {
if (key == 'bar') {
myArray.splice(key, 1);
}
}
o
for (var key in myArray) {
if (myArray[key] == 'bar') {
myArray.splice(key, 1);
}
}
for (var key in myArray)
lugar de for (key in myArray)
: de lo contrario, key
es una variable global y si llama a una función dentro de ese ciclo que tiene el mismo problema, obtendrá resultados inesperados.
delete foo[key];
:RE
eval
. La eliminación de una clave / índice de un objeto / matriz se puede lograr mediante métodos mucho más simples que no se usan eval
.
Una nota importante: las matrices de JavaScript no son matrices asociativas como las que podría estar acostumbrado desde PHP. Si su "clave de matriz" es una cadena, ya no está operando en el contenido de una matriz. Su matriz es un objeto y está utilizando la notación de paréntesis para acceder al miembro llamado <nombre clave>. Así:
var myArray = []; myArray ["bar"] = verdadero; myArray ["foo"] = verdadero; alerta (myArray.length); // devuelve 0.
Como no ha agregado elementos a la matriz, solo ha modificado los miembros de barra y foo de myArray.
Si conoce el nombre de la clave, simplemente haga lo siguiente:
delete array['key_name']
Así es como lo haría
myArray.splice( myArray.indexOf('bar') , 1)
http://www.internetdoc.info/javascript-function/remove-key-from-array.htm
removeKey(arrayName,key);
function removeKey(arrayName,key)
{
var x;
var tmpArray = new Array();
for(x in arrayName)
{
if(x!=key) { tmpArray[x] = arrayName[x]; }
}
return tmpArray;
}