comment supprimer la clé + valeur du hachage en javascript

Donné

var myHash = new Array(); myHash['key1'] = { Name: 'Object 1' }; myHash['key2'] = { Name: 'Object 2' }; myHash['key3'] = { Name: 'Object 3' }; 

Comment puis-je supprimer key2 et l’ object 2 du hachage pour qu’il se retrouve dans un état comme si je le faisais:

 var myHash = new Array(); myHash['key1'] = { Name: 'Object 1' }; myHash['key3'] = { Name: 'Object 3' }; 

supprimer ne fait pas ce que je veux;

 delete myHash['key2'] 

me donne simplement ceci:

 var myHash = new Array(); myHash['key1'] = { Name: 'Object 1' }; myhash['key2'] = null; myHash['key3'] = { Name: 'Object 3' }; 

les seuls documents que je peux trouver sur splice et slice traitent des indexeurs d’entiers, ce que je n’ai pas.

Edit: Je ne sais pas non plus que ‘key2’ est nécessairement en position [1]

METTRE À JOUR

OK légèrement rouge, supprimer semble faire ce que je veux à la surface, cependant, j’utilise json2.js pour limiter mon object à json pour repousser sur le serveur,

Après avoir supprimé, myHash est sérialisé en tant que:

 [ { Name: 'Object 1' }, null, { Name: 'Object 3' } ] 

Est-ce un bug dans json2.js? ou est-ce quelque chose que je fais mal avec supprimer?

Merci

Vous cherchez à delete :

 delete myhash['key2'] 

Voir le Core Javascript Guide

Pourquoi utilisez-vous new Array(); pour le hash? Vous devez utiliser new Object() place.

Et je pense que vous obtiendrez ce que vous voulez.

Vous dites que vous ne savez pas nécessairement que «key2» est en position [1]. Eh bien, ce n’est pas le cas. La position 1 serait occupée par myHash [1].

Vous abusez des tableaux JavaScript, qui (comme les fonctions) autorisent les hachages de clé / valeur. Même si JavaScript le permet, il ne vous permet pas de le gérer, car un langage conçu pour les tableaux associatifs le ferait. Les méthodes de tableau de JavaScript fonctionnent uniquement avec les propriétés numérotées.

La première chose à faire est de passer aux objects plutôt qu’aux tableaux. Vous n’avez pas de raison d’utiliser un tableau ici plutôt qu’un object, alors ne le faites pas. Si vous voulez utiliser un tableau, numérotez les éléments et abandonnez l’idée de hashes. L’intention d’un tableau est de contenir des informations pouvant être indexées numériquement.

Vous pouvez, bien sûr, mettre un hash (object) dans un tableau si vous le souhaitez.

 myhash[1]={"key1","brightOrangeMonkey"}; 

Une autre option pourrait être cette méthode de suppression de John Resig . peut mieux s’adapter à ce dont vous avez besoin. si vous connaissez l’index dans le tableau.