как удалить ключ+значение из хэша в javascript
дано
var myHash = new Array();
myHash['key1'] = { Name: 'Object 1' };
myHash['key2'] = { Name: 'Object 2' };
myHash['key3'] = { Name: 'Object 3' };
как мне удалить key2 и object 2 из хэша, так что он заканчивается в состоянии, как если бы я сделал:
var myHash = new Array();
myHash['key1'] = { Name: 'Object 1' };
myHash['key3'] = { Name: 'Object 3' };
удалить не делает то, что я хочу;
delete myHash['key2']
просто дает мне это:
var myHash = new Array();
myHash['key1'] = { Name: 'Object 1' };
myhash['key2'] = null;
myHash['key3'] = { Name: 'Object 3' };
единственные документы, которые я могу найти на splice и slice дело с целочисленными индексаторами, которых у меня нет.
Edit: я также не знаю, что' key2 ' обязательно находится в положении [1]
обновление
OK небольшая красная селедка, delete, похоже, делает то, что я хочу на поверхности, однако я использую json2.js для строки моего объекта в json для возврата на сервер,
после удаления myHash сериализуется как:
[ { Name: 'Object 1' }, null, { Name: 'Object 3' } ]
это ошибка в json2.Джей? или это то, что я делаю неправильно с delete?
спасибо
4 ответов:
вы ищете
delete:delete myhash['key2']посмотреть Core Javascript Guide
почему вы используете
new Array();для окрошки? Вы должны использоватьnew Object()вместо.и я думаю, вы получите то, что вы хотите.
вы говорите, что не обязательно знаете, что 'key2' находится в положении [1]. Ну, это не так. Позицию 1 занял бы михаш[1].
вы злоупотребляете массивами JavaScript, которые (как и функции) позволяют хэши ключей/значений. Несмотря на то, что JavaScript позволяет это, он не дает вам возможности справиться с этим, как язык, предназначенный для ассоциативных массивов. Методы массива JavaScript работают только с нумерованными свойствами.
первое, что вы должны сделать, это переключиться на объекты, а не массивы. У вас нет веской причины использовать здесь массив, а не объект, поэтому не делайте этого. Если вы хотите использовать массив, просто пронумеруйте элементы и откажитесь от идеи хэшей. Целью массива является хранение информации, которая может быть индексирована в числовом выражении.
вы можете, конечно, поместить хэш (объект) в массив, если хотите.
myhash[1]={"key1","brightOrangeMonkey"};
другой вариант может быть таким John Resig remove method. может лучше соответствовать тому, что вам нужно. если вы знаете индекс в массиве.
Comments