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

Изменение имени ключа в массиве объектов?

Как изменить имя ключа в массиве объектов?

var arrayObj = [{key1:'value1', key2:'value2'},{key1:'value1', key2:'value2'}];

Как я могу изменить каждый key1 на stroke, чтобы получить:

var arrayObj = [{stroke:'value1', key2:'value2'},{stroke:'value1', key2:'value2'}];
4b9b3361

Ответ 1

var i;
for(i = 0; i < arrayObj.length; i++){
    arrayObj[i].stroke = arrayObj[i]['key1'];
    delete arrayObj[i].key1;
}

Ответ 2

Вы не можете изменить имя свойства, вам нужно добавить значение с новым именем и удалить старое свойство:

for (var i = 0; i < arrayObj.length; i++) {
  arrayObj[i].stroke = arrayObj[i].key1;
  delete arrayObj[i].key1;
}

Ответ 3

function changeKey(originalKey, newKey, arr)
{
  var newArr = [];
  for(var i = 0; i < arr.length; i++)
  {
    var obj = arr[i];
    obj[newKey] = obj[originalKey];
    delete(obj[originalKey]);
    newArr.push(obj);
  }
  return newArr;
}

Ответ 4

Вы не изменяете имя ключа. Вы можете назначить новое имя/значение ключа, а затем удалить предыдущий ключ, если хотите. В вашем примере:

var arrayObj = [{key1,'value1', key2:'value2'},{key1,'value1', key2:'value2'}];
var o = arrayObj[0];   // get first object
var val = o.key1;      // get current value
o.stroke = val;        // assign to new key
delete o.key1;         // remove previous key

Если вы хотите сделать это для всех объектов в вашем основном массиве, вы просто поместите это в цикл, который выполняет итерацию над содержимым вашего массива. Я поставил здесь более промежуточные задания, чем необходимо, чтобы документировать, что происходит.

Или сокращенная версия в цикле:

for (var i = 0; i < arrayObj.length; i++) {
    var o = arrayObj[i];
    o.stroke = o.key1;
    delete o.key1;
}