Удалить элемент из ключа сеанса localStorage Javascript - PullRequest
1 голос
/ 05 мая 2020

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

Итак, у меня есть следующие данные в моем локальном хранилище.

JSON.parse(localStorage.getItem("products"));
//resuts
['34',76,'34']

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

$('.delete_item').on('click', function() {
   let delete_data = $(this).val();
   my_product = JSON.parse(localStorage.getItem("products"));
   delete my_product[delete_data];
   localStorage.setItem("products", JSON.stringify(my_product));
});

Ответы [ 2 ]

5 голосов
/ 05 мая 2020

Это не способ удаления элемента из массива, ключевое слово delete работает с удалением свойств объекта.
С массивами вы можете использовать фильтр . Код должен быть таким:

$('.delete_item').on('click', function() {
   let delete_data = $(this).val();
   my_product = JSON.parse(localStorage.getItem("products"));

   // Change this line
   my_product = my_product.filter(prodId => prodId !== delete_data);

   localStorage.setItem("products", JSON.stringify(my_product));
});

Как предлагает Дай , вот более чистый / действительный код:

$('.delete_item').on('click', function() {
   const deletedProduct = $(this).val();
   let products = JSON.parse(localStorage.getItem("products"));

   products = my_product.filter(prodId => prodId !== deletedProduct);

   localStorage.setItem("products", JSON.stringify(products));
});
0 голосов
/ 05 мая 2020

Так как это массив, вы можете использовать все методы управления массивом, такие как unshift, slice, splice и т. Д. c соответственно. Например:

Метод splice () добавляет / удаляет элементы в / из массива и возвращает удаленные элементы.

array.splice (index, howmany, item1,. ...., itemX)

 my_product.splice(idx, 1);
 localStorage.setItem("products", JSON.stringify(my_product));

Вы получите обновленный массив my_product.

...