2016-08-03 28 views
0

Ich habe ein Array ich gespeichert (geparste es als JSON) im lokalen Speicher. Ich habe es zurück in ein Objekt, entfernt einige Elemente aus ihm und ich muss den Schlüssel mit den neuen Werten im lokalen Speicher aktualisieren.Entfernen Array-Element aus dem lokalen Speicher

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); 

Nun, wenn ich die Frage Schlüssel aus dem lokalen Speicher zu entfernen, die ganze Frage Array gelöscht wird, aber ich brauche nur die besondere Frage Array zu löschen, übergeben wurde.

Antwort

2

Statt den Schlüssel zu löschen, setzen Sie ihn einfach wieder mit dem neuen Array Fragen:

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

nicht removeItem() Verwenden Sie das, wie der Name sagt, aus localStorage den ganzen Artikel entfernt. Tun Sie einfach einen anderen setItem(), um die alten Daten zu überschreiben.

auch tun Sie:

questions = questions.splice(index, 1); 

Das Element zu entfernen, wird (n) aus dem Array und bringt sie. questions ist dann das entfernte Element und nicht das modifizierte Array. Mit deiner Frage willst du nur das modifizierte Array. So tun nur die splice() ohne die Zuordnung

Also Ihr Ende Code wäre:

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