Подтвердить что ты не робот

Изменить ключ в 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, что я хочу сделать, как можно более эффективно изменить имя свойства объекта.

4b9b3361

Ответ 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" - это то, что вы получаете, когда проверяете объект для свойства и нет такого свойства.