2016-08-03 65 views
0

我有一个数组存储(解析为json)在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); 

这将会从数组中删除元素(S)和归还。然后questions将被删除的元素(s),而不是你修改后的数组。通过你的问题,你只需要修改后的数组。所以只是做splice()没有分配

所以你的最终代码如下:

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