Как обновить данные из локального хранилища, если новые выбранные данные существуют - PullRequest
0 голосов
/ 07 сентября 2018

Я создаю систему заказов, в которой пользователь выберет товар и добавит его в корзину. Я использую локальное хранилище, чтобы сохранить выбранные элементы и получить их на следующей странице.

Теперь я хочу обновить сохраненные данные, если пользователь выбрал тот же элемент.

Например Я уже сохранил

[{
 "id": "1",
 "name": "soap A",
 "quantity": "10",
 "price" : "50.00"
},
{
 "id": "2",
 "name": "soap X",
 "quantity": "10",
 "price" : "50.00"
}]

и пользователь снова выбрал элемент с id из 1 (что составляет "soap A") и количеством "15", мой текущий результат выглядит следующим образом

[{
     "id": "1",
     "name": "soap A",
     "quantity": "10",
     "price" : "50.00"
    },
    {
     "id": "2",
     "name": "soap X",
     "quantity": "10",
     "price" : "50.00"
    },
    {
     "id": "1",
     "name": "soap A",
     "quantity": "15",
     "price" : "50.00"
    }]

То, что я хотел сделать, это обновить, если объект с таким же идентификатором существует в моем локальном хранилище. это будет выглядеть так

[{
     "id": "1",
     "name": "soap A",
     "quantity": "25",
     "price" : "50.00"
    },
    {
     "id": "2",
     "name": "soap X",
     "quantity": "10",
     "price" : "50.00"
    }]

и вот мой скрипт для вставки в локальное хранилище.

var oldItems = JSON.parse(localStorage.getItem('itemsArray')) || [];
    var newItem = {
          'id' : $('#itemId').val(),
          'name': $('#productName').val(),
          'quantity': $('#quantity').val(),
          'price': $('#productPrice').val(),

      };
       oldItems.push(newItem);

localStorage.setItem('itemsArray', JSON.stringify(oldItems));

1 Ответ

0 голосов
/ 07 сентября 2018

Вам необходимо find соответствующий id в текущем массиве, если он существует.Если это так, присвойте этому элементу - в противном случае нажмите новый элемент.

const oldItems = JSON.parse(localStorage.getItem('itemsArray')) || [];
const idToUse = $('#itemId').val();
const existingItem = oldItems.find(({ id }) => id === idToUse);
if (existingItem) {
  Object.assign(existingItem, {
    'name': $('#productName').val(),
    'quantity': existingItem.quantity + $('#quantity').val(),
    'price': $('#productPrice').val(),
  })
} else {
  const newItem = {
    'id' : idToUse,
    'name': $('#productName').val(),
    'quantity': $('#quantity').val(),
    'price': $('#productPrice').val(),

  };
  oldItems.push(newItem);
}

localStorage.setItem('itemsArray', JSON.stringify(oldItems));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...