Étant donné que
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 object 2
du hachage, de sorte qu'il se retrouve dans un état comme si je l'avais fait :
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
traiter avec des indexeurs entiers, ce que je n'ai pas.
Edit : Je ne sais pas non plus si 'key2' est nécessairement en position [1].
UPDATE
OK, léger faux-fuyant, delete semble faire ce que je veux à première vue, mais j'utilise json2.js pour transformer mon objet en json et le renvoyer au serveur,
après que j'ai supprimé, monHash est sérialisé comme :
[ { Name: 'Object 1' }, null, { Name: 'Object 3' } ]
Est-ce un bug dans json2.js ? ou est-ce que je fais quelque chose de mal avec delete ?
Merci
3 votes
Ce que vous faites, c'est ajouter des propriétés à un objet, ce qui est différent de l'ajout d'éléments à un tableau/hash. Vous cherchez un moyen de supprimer une propriété, plus ou moins. Essayez de supprimer myHash.key1, comme mentionné dans d'autres commentaires.
2 votes
Si c'est une table de hachage, vous devez utiliser
var myHash = new Object()
au lieu devar myHash = new Array()
.