При добавлении объекта в массив он заменятся
let orders = []; // массив заказов
let orderData = {
id: "",
title: "",
size: "",
weight: "",
ingridients: [],
price: "",
total_price: null,
quantity: 0,
}; // болванка объекта заказа
let order = {}; // костыль чтоб избавиться от ссылки
let storageOrdersData = JSON.parse(localStorage.getItem("orders", orders)); // получаю массив заказов из хранилища
// проверяю есть ли уже сохраненные в хранилище заказы
if (storageOrdersData !== null) {
const foundedItem = storageOrdersData.find((item) => item.id === orderData.id); //ищу совпадения
// если есть...
if (foundedItem) {
foundedItem.quantity++; // увеличиваю количество товара(заказа)
foundedItem.total_price = foundedItem.quantity * foundedItem.price; // увеличиваю стоимость
orders.push(foundedItem); // пушу в массив
} else {
order = {
id: orderData.id,
title: orderData.title,
size: orderData.size,
weight: orderData.weight,
ingridients: orderData.ingridients,
price: orderData.price,
total_price: orderData.prtotal_priceice,
quantity: orderData.quantity,
}; // заполняю костыль чтоб наверняка объекты были разные
orders.push(order); // пушу
}
}
localStorage.setItem("orders", JSON.stringify(orders)); // записываю в хранилище
Получается что при добавлении уже имеющегося заказа количество и цена пересчитываются, но если такого заказа нет..то вместо пуша нового заменятся сохраненный ранее...
Ответы (1 шт):
Автор решения: Victor Gorban
→ Ссылка
let orders = [] - вы каждый раз создаете новый массив. Затем пушите в него один элемент. Наверное, вы хотите объединить новые данные с сохраненными?
let storageOrdersData = JSON.parse(localStorage.getItem("orders", orders));
let orders = storageOrdersData || []