从本地存储中删除数组项

6

我在本地存储中有一个数组,已解析为JSON格式。我将其转换为对象后,从中删除了一些项目,并需要使用新值更新本地存储中的键。

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

现在,当我从本地存储中删除问题键时,整个问题数组都会被删除,但是我只需要删除传递的特定问题数组。

4个回答

7

不要删除该键,只需使用新的问题数组再次设置它:

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

5

不要使用removeItem()方法,该方法会从localStorage完全删除项目。仅需使用另一个setItem()方法覆盖旧数据即可。

此外你可以这样做:

questions = questions.splice(index, 1);

这将从数组中删除元素并返回它们。 questions 将成为被移除的元素,而不是您修改后的数组。根据您的问题,您只想要修改后的数组。因此,只需执行没有赋值的 splice() 即可。
因此,您的最终代码将是:
questions.splice(index, 1);
localStorage.setItem('questions',JSON.stringify(questions));

2

嗯,上述例子并不是一个简单易懂的方式。 - Hassan Khan

0

你只需要重复使用之前的localStorage即可。它会自动更新之前存储的内容。在删除方法后立即使用它。

localStorage.setItem('questions', JSON.stringify(questions));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接