繁体   English   中英

从本地存储中删除数组项

[英]Remove array item from localstorage

我在本地存储中存储了一个数组(将其解析为 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);

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

而不是删除密钥,只需使用新的问题数组重新设置它:

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

不要使用removeItem() ,顾名思义,它会从localStorage删除整个项目。 只需执行另一个setItem()来覆盖旧数据。

你也这样做:

questions = questions.splice(index, 1);

这将从数组中删除元素并返回它们。 questions将是删除的元素,而不是您修改后的数组。 根据您的问题,您只想要修改后的数组。 所以只需在没有赋值的情况下执行splice()

所以你的最终代码是:

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

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

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

我为你准备了这个,你可以很简单地使用它。,

现场示例和演示: LocalStorage Arrays:添加、删除、更新和超越...

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM