Como removo a chave 'bar' de uma matriz foo para que 'bar' não apareça em
for(key in foo){alert(key);}
Como removo a chave 'bar' de uma matriz foo para que 'bar' não apareça em
for(key in foo){alert(key);}
Respostas:
Não use delete, pois ele não removerá um elemento de uma matriz, apenas a definirá como indefinida, o que não será refletido corretamente no comprimento da matriz.
Se você sabe a chave que você deve usar tala ou seja,
myArray.splice(key, 1);
Para alguém na posição de Steven, você pode tentar algo como isto:
for (var key in myArray) {
if (key == 'bar') {
myArray.splice(key, 1);
}
}
ou
for (var key in myArray) {
if (myArray[key] == 'bar') {
myArray.splice(key, 1);
}
}
for (var key in myArray)
vez de for (key in myArray)
- caso contrário, key
é uma variável global e se você chamar uma função dentro desse loop com o mesmo problema, obterá resultados inesperados.
delete foo[key];
: D
eval
. A exclusão de uma chave / índice de um objeto / matriz pode ser alcançada por métodos muito mais simples que não são utilizados eval
.
Uma observação importante: as matrizes JavaScript não são matrizes associativas como as que você pode estar acostumado a partir do PHP. Se a sua "chave de matriz" for uma sequência, você não estará mais operando no conteúdo de uma matriz. Sua matriz é um objeto e você está usando a notação de colchete para acessar o membro chamado <nome da chave>. Portanto:
var myArray = []; myArray ["bar"] = true; myArray ["foo"] = true; alerta (myArray.length); // retorna 0.
porque você não adicionou elementos à matriz, apenas modificou os membros bar e foo do myArray.
Se você souber o nome da chave, faça o seguinte:
delete array['key_name']
É assim que eu faria
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;
}