Такс, если можно модифицировать изначальный объект userData, то вот:
const addProductToCart = (userData, product) => {
userData.cart.products.push(product)
userData.cart.totalPrice += product.price
userData.cart.totalCounter += 1
return userData
}
addProductToCart(userData, ProductList[0])
addProductToCart(userData, ProductList[1])
console.log(userData.cart)
Функция принимает два параметра, объект пользователя и товар
В корзину пользователя, методом push(), добавляем продукт
Присваиваем итоговую цену и количество товаров
Возвращаем модифицированную юзер дату.
Дважды вызываем функцию addProductToCart, передаем в нее юзерДату и продукты
Смотрим в консоли на корзину юзера, видим, что оба товара добавлены, Вроде всё.
Ну, и напоследок, вот про такие приколы
userData = newUserData
вообще забудь, это очень плохо, даже понять сложно, что тут подразумевалось, не надо так делать.
Есть функция которая должна вернуть новый массив внутри которого будет 2 продукта но когда я возвращаю полностью userData у меня в cart пусто только когда возвращаю usersData. Cart.products все правильно выводит в чем ошибка как сделать так что бы я могла возвращать сразу весь объект userData и у меня уже внутри него будет новый массив продуктов const userData = {
id: 1,
username: 'user123',
cart: {
products: [],
totalPrice: 0,
totalCounter: 0,
},
orders: [],
};
const ProductList = [
{
id: 1,
country: 'USA',
isPremium: true,
name: 'Product 1',
value: 1,
price: 10,
},
{
id: 2,
country: 'Canada',
isPremium: false,
name: 'Product 2',
value: 2,
price: 20,
},
];
function addProductToCart(userData, product) {
const newUserData = { ...userData };
newUserData.cart.products = [...newUserData.cart.products, product];
userData = newUserData;
return userData.cart.products;
}
console.log(addProductToCart(userData, ProductList[0]))
console.log(addProductToCart(userData, ProductList[1]))