Ответ 1
var i;
for(i = 0; i < arrayObj.length; i++){
arrayObj[i].stroke = arrayObj[i]['key1'];
delete arrayObj[i].key1;
}
Как изменить имя ключа в массиве объектов?
var arrayObj = [{key1:'value1', key2:'value2'},{key1:'value1', key2:'value2'}];
Как я могу изменить каждый key1
на stroke
, чтобы получить:
var arrayObj = [{stroke:'value1', key2:'value2'},{stroke:'value1', key2:'value2'}];
var i;
for(i = 0; i < arrayObj.length; i++){
arrayObj[i].stroke = arrayObj[i]['key1'];
delete arrayObj[i].key1;
}
Вы не можете изменить имя свойства, вам нужно добавить значение с новым именем и удалить старое свойство:
for (var i = 0; i < arrayObj.length; i++) {
arrayObj[i].stroke = arrayObj[i].key1;
delete arrayObj[i].key1;
}
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;
}
Вы не изменяете имя ключа. Вы можете назначить новое имя/значение ключа, а затем удалить предыдущий ключ, если хотите. В вашем примере:
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;
}