Как вернуть объект через функцию при помощи оператора распространения?
Всем привет! Подскажите, пожалуйста, как вернуть объект его копией, при этом изменив одно из значений ключа в изначальном объекте? Слышал про Object.assign({}), но он изменяет изначальный объект, а я бы хотел получить копию c измененным значением + оригинальный объект.
let color_lawn = {
title: 'lawn',
color: '#00FF00',
rating: 0
}
const getColorRating = (color, rating) => ({
...color.rating
})
console.log(getColorRating(color_lawn, 5);
Ответы (2 шт):
Автор решения: SwaD
→ Ссылка
Для создания копии объекта можно воспользоваться spread оператором, но он копирует только 1 уровень. Если в объекте есть другие объекты, то они будут переданы по ссылке
let color_lawn = {
title: 'lawn',
color: '#00FF00',
rating: 0
}
const getColorRating = (color, rating) => {
const newColor = { ...color_lawn }
newColor.color = color;
newColor.rating = rating;
return newColor;
}
const color_q = getColorRating('#555555', 1);
console.log(color_q === color_lawn)
Автор решения: Qwertiy
→ Ссылка
let color_lawn = {
title: 'lawn',
color: '#00FF00',
rating: 0
}
const getColorRating = (color, rating) => ({
...color_lawn,
color,
rating,
})
console.log(getColorRating('#555555', 1))