Изменить ключ в js ассоциативном массиве
Если у меня есть:
var myArray = new Array();
myArray['hello'] = value;
Как я могу изменить ключ "привет" на что-то еще?
Что-то вроде этого будет работать.
var from = 'hello',
to = 'world',
i, value = myArray[from];
for( i in myArray )
if( i == from ) myArray.splice( i, 1 );
myArray[to] = value;
Но есть ли нативная функция или лучший способ сделать это?
изменить
Из-за отсутствия ассоциативных массивов в js, что я хочу сделать, как можно более эффективно изменить имя свойства объекта.
Ответы
Ответ 1
В JavaScript нет такой вещи, как ассоциативный массив. Вместо этого можно использовать объекты:
var myHash = new Object();
или
var myHash = {};
replace можно сделать следующим образом:
myHash["from"] = "value";
myHash["to"] = myHash["from"];
delete myHash["from"];
но предпочтительный способ записать его:
myHash.from = "value";
myHash.to = myHash.from;
delete myHash.from;
Ответ 2
Вы не можете "изменить" имя свойства, но всегда можете присвоить значение свойства новому имени, а затем удалить исходный.
myArray['world'] = myArray.hello;
delete myArray.hello;
Кроме того, вы работаете с экземпляром Array, но используете его как простой объект; все, что вы делаете, будет работать так же хорошо:
var myArray = {};
"Сплит()", который вы пытаетесь опубликовать в коде, не будет работать, потому что он используется только для фактических свойств с индексом с целыми индексами, а не с именованными свойствами.
То, что "delete" действительно не удаляет свойство, действительно не имеет значения. Значение "undefined" - это то, что вы получаете, когда проверяете объект для свойства и нет такого свойства.