Como faço para remover objetos de uma matriz associativa javascript?

Suponha que eu tenho este código:

var myArray = new Object();
myArray["firstname"] = "Bob";
myArray["lastname"] = "Smith";
myArray["age"] = 25;

Agora se eu quisesse remover "sobrenome"?.... há algum equivalente a myArray["lastname"].remove()?

(Preciso que o elemento desapareça porque o número de elementos é importante e eu quero manter as coisas limpas).

Solução

Use o " delete" palavra-chave em Javascript.

delete myArray["lastname"];

EDITAR:

Em algum mecanismo JavaScript, a palavra-chave delete pode prejudicar o desempenho, pois irá desfazer a compilação / otimização do JIT.

http://www.html5rocks.com/en/tutorials/speed/v8/ http://www.smashingmagazine.com/2012/11/writing-fast-memory-efficient-javascript/

Comentários (13)

Todos os objectos em JavaScript são implementados como hashtables/associative arrays. Portanto, os seguintes são o equivalente:

alert(myObj["SomeProperty"]);
alert(myObj.SomeProperty);

E, como já indicado, você "remove" uma propriedade de um objeto através da palavra-chave delete, que você pode utilizar de duas maneiras:

delete myObj["SomeProperty"];
delete myObj.SomeProperty;

Espero que a informação extra ajude...

Comentários (3)

Isso só elimina o objeto, mas ainda mantém o comprimento da matriz igual.

Para remover você precisa de fazer algo como:

array.splice(index, 1);
Comentários (3)