2016-08-03 2 views
0

У меня есть массив, который я сохранил (проанализировал его как json) в localstorage. Я вернул его обратно в объект, удалил некоторые элементы из него, и мне нужно обновить ключ с новыми значениями в локальном хранилище.Удалить элемент массива из localstorage

var counter = [0,1,2]; 
var count = counter[0]; 
var questions = localStorage.getItem('questions');///questions had been stored in local storage with another function 
console.log(questions); 
questions = $.parseJSON(questions); 

if (questions != 0){ 
    $('.question').html(questions[count]['question']); 
    var options = (questions[count]['options']); 
    options.forEach(function (item) { 
     $('.options').html(item); 
    }); 
    var index = counter.indexOf(1); 
    questions = questions.splice(index, 1); 
    console.log(questions); 
    localStorage.removeItem('questions); 
    counter = counter.splice(index, 0); 

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

ответ

2

Вместо того, чтобы удалить ключ, просто установите его снова с вопросами массива:

questions.splice(index, 1); 
localStorage.setItem('questions', JSON.stringify(questions)); 
1

Не используйте removeItem(), что, как говорит название удаляет весь элемент из localStorage. Сделайте еще setItem(), чтобы перезаписать старые данные.

Также вы:

questions = questions.splice(index, 1); 

Это собирается удалить элемент (ы) из массива и возвращает их. questions будет удаленным элементом (-ами), а не измененным массивом. По вашему вопросу вы просто хотите модифицированный массив. Так просто сделать splice() без присвоения

Таким образом, ваш конечный код будет:

questions.splice(index, 1); 
localStorage.setItem('questions',JSON.stringify(questions));