Если я console.log (localStorage.getItem ("cartCache")), результат выглядит так:

{"dataCache":[{"id":20,"quantity":1,"total":100000,"request_date":"27-08-2017 20:31:00"},{"id":53,"quantity":1,"total":200000,"request_date":"27-08-2017 20:38:00"}],"expired":"2017-08-28T03:55:21.521Z"}

Я хочу удалить данные в кеше по индексу массива

Например, когда я удаляю index array = 0, результат будет таким:

{"dataCache":[{"id":53,"quantity":1,"total":200000,"request_date":"27-08-2017 20:38:00"}]}

Другой пример, когда я удаляю index array = 1, результат будет таким:

{"dataCache":[{"id":20,"quantity":1,"total":100000,"request_date":"27-08-2017 20:31:00"}]}

Как я могу это сделать?

Я пытаюсь так:

var deleteIndex = 1;
var retrievedObj = localStorage.getItem("cartCache")
delete retrievedObj['dataCache'][deleteIndex];

Кажется, это не правильный путь

-1
Success Man 28 Авг 2017 в 07:02

3 ответа

Лучший ответ

Вы можете использовать splice для удаления элемента из массива

// Clearing all localStorage value. No need to use below line in your code
localStorage.clear();
// to be stored object
var x = {
  "dataCache": [{
    "id": 20,
    "quantity": 1,
    "total": 100000,
    "request_date": "27-08-2017 20:31:00"
  }, {
    "id": 53,
    "quantity": 1,
    "total": 200000,
    "request_date": "27-08-2017 20:38:00"
  }],
  "expired": "2017-08-28T03:55:21.521Z"
}
// Initially storing it in local storage using JSON.stringify
localStorage.setItem('storeData', JSON.stringify(x));
// Once stored retrieving the value using JSON.parse
var getItem = JSON.parse(localStorage.getItem('storeData'));
// setting the dataCache with new array. The new array will be created as splice is used. splice is used to remove an item from array,
//0 is the index of the array, while second parameter 1 is to represent how many item to be removed starting from 0 ndex
getItem.dataCache = getItem.dataCache.splice(0, 1);
console.log(getItem); // the modified object
// after operation setting it to local storage
localStorage.setItem('storeData', JSON.stringify(getItem))

DEMO

1
brk 28 Авг 2017 в 04:22

Ключевое слово "delete" удаляет deleteIndex только в retrieveObj, оно не обновляет значение localStorage. Для обновления localStorage используйте:

var deleteIndex = 1;
var retrievedObj = localStorage.getItem("cartCache")
delete retrievedObj['dataCache'][deleteIndex];
localStorage.setItem("cartCache", retrieveObj)
0
myxobek 28 Авг 2017 в 05:40

localStorage.getItem("cartCache") возвращает вам два объекта - dataCache и expired . Если вы хотите удалить элемент n из dataCache , удалите его с помощью

localStorage.getItem("cartCache").dataCache.splice(n,1);

Чтобы вписать это в свой код:

var deleteIndex = 1;
var retrievedObj = localStorage.getItem("cartCache");
retrievedObj.dataCache.splice(deleteIndex,1);

Затем console.log ваш localStorage снова, и вы увидите, что элемент удален.

4
Aydin4ik 28 Авг 2017 в 04:16