Ответ 1
Вы ищете delete
:
delete myhash['key2']
Смотрите Руководство по основам 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 не делает то, что я хочу;
delete myHash['key2']
просто дает мне следующее:
var myHash = new Array();
myHash['key1'] = { Name: 'Object 1' };
myhash['key2'] = null;
myHash['key3'] = { Name: 'Object 3' };
единственные документы, которые я могу найти на splice
и slice
, имеют дело с целыми индексаторами, которых у меня нет.
Изменить: я также не знаю, что "key2" обязательно находится в позиции [1]
ОБНОВЛЕНИЕ
OK небольшая красная селедка, удаление, похоже, делает то, что я хочу на поверхности, однако im, используя json2.js, чтобы передать мой объект json для возврата на сервер,
После удаления ive myHash сериализуется как:
[ { Name: 'Object 1' }, null, { Name: 'Object 3' } ]
Является ли это ошибкой в json2.js? или это что-то, что я делаю неправильно с удалением?
Спасибо
Вы ищете delete
:
delete myhash['key2']
Смотрите Руководство по основам Javascript
Почему вы используете new Array();
для хэша? Вместо этого вам нужно использовать new Object()
.
И я думаю, вы получите то, что хотите.
Вы говорите, что не обязательно знаете, что "ключ2" находится в положении [1]. Ну, это не так. Позиция 1 будет занята myHash [1].
Вы злоупотребляете массивами JavaScript, которые (например, функции) позволяют использовать хэши ключей/значений. Несмотря на то, что JavaScript позволяет это, он не дает вам возможностей справиться с этим, поскольку язык, предназначенный для ассоциативных массивов. Методы массива JavaScript работают только с пронумерованными свойствами.
Первое, что вам нужно сделать - это переключиться на объекты, а не на массивы. У вас нет оснований использовать массив здесь, а не объект, поэтому не делайте этого. Если вы хотите использовать массив, просто введите числа и откажитесь от идеи хэширования. Целью массива является хранение информации, которая может быть проиндексирована в численном виде.
Вы можете, конечно, поместить хэш (объект) в массив, если хотите.
myhash[1]={"key1","brightOrangeMonkey"};
Другим вариантом может быть метод удаления John Resig. может лучше соответствовать тому, что вам нужно. если вы знаете индекс в массиве.