Получаю с сервера массив объектов tempArray
. Подскажите, как создать копию этого массива и переименовать поле name
на title
let tempArray = [{
id: '1',
name: 'Tom',
age: 11
},
{
id: '2',
name: 'Jerry',
age: 13
}
...
]
let newArr = tempArray.forEach(item => { ?
})
Не forEach
, а map
const tempArray = [
{
id: '1',
name: 'Tom',
age: 11
},
{
id: '2',
name: 'Jerry',
age: 13
}
]
const newArr = tempArray.map(item => ({
// Так ссылка не скопируется и оригинальный массив останется чист
id: item.id,
title: item.name,
age: item.age,
}));
console.log(newArr);
Ссылки
Array.prototype.map
Для начала, для создания копии массива нужно использовать не метод forEach
, который просто перебирает элементы массива, а метод map
который модифицирует элементы и создает новый массив из модифицированных элементов.
Копирование объекта происходит так
res = Object.assign({title: item.name}, item);
здесь в объект {title: item.name}
добавляются все поля из item
.
Ну а потом, в новом объекте нужно просто удалить ненужное поле
delete res.name;
let tempArray = [{
id: '1',
name: 'Tom',
age: 11
},
{
id: '2',
name: 'Jerry',
age: 13
}
]
let newArr = tempArray.map(item => {
res = Object.assign({title: item.name}, item);
delete res.name;
return res;
})
console.log(newArr);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском