how to remove key+value from hash in javascript

Viewed 111505

Given

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

How do I remove key2, and object 2 from the hash, so that it ends up in a state as if I did:

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

delete doesn't do what I want;

delete myHash['key2'] 

simply gives me this:

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

the only docs I can find on splice and slice deal with integer indexers, which I don't have.

Edit: I also do not know that 'key2' is necessarily in position [1]

UPDATE

OK slight red herring, delete does seem to do what I want on the surface, however, I'm using json2.js to stringify my object to json for pushing back to the server,

after I've deleted, myHash gets serialized as:

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

Is this a bug in json2.js? or is it something I'm doing wrong with delete?

Thanks

4 Answers
Related