如何从本地存储中的数组中删除对象?

时间:2017-06-04 10:47:27

标签: javascript jquery local-storage

我有这样的数组:

var myMovie = [];

像这样的对象:

var first = {id:"tt3783958", title:"La La Land", year:"2016", type:"Comedy, Drama, Music"}

通过OnClick()按钮将对象添加到本地存储阵列中。

$(document).ready(function() {
   $(".btn.btn-outline-success").click(function () {

    myMovie.push(first); 

    localStorage.setItem('myMovie', JSON.stringify(myMovie));
    var output = JSON.parse(localStorage.getItem('myMovie'));

对象添加到本地存储中后,本地存储如下所示:

[{id:"tt3783958", title:"La La Land", year:"2016", type:"Comedy, Drama, Music"}]

我的问题是,如何通过变量名删除整个对象?我想从first中删除对象myMovie。每次对象的索引位置可能不同

[{id:"tt3783958", title:"La La Land", year:"2016", type:"Comedy, Drama, Music"}, [{id:"tt9574821", title:"Ghost Protocol", year:"2012", type:"Action, Adventure"}]

3 个答案:

答案 0 :(得分:1)

我建议你把你的对象格式化

var first = {"tt3783958": { title:"La La Land", year:"2016", type:"Comedy, Drama, Music"}}

ID将使您的对象具有唯一键。更新也很容易。

并将它们存储在JSON对象中,而不是像

那样的数组
myMovie = {}; //note its an object

这样可以让您更轻松地查询和删除项目。

答案 1 :(得分:1)

Best是一个函数,不仅可以更改数组,还可以将其存储在localStorage中。

要找到要删除的正确索引,您可以找到具有正确标题的对象:



    var myMovie=[] //JSON.parse(localStorage.getItem('myMovie')||"[]");
    
    function push(el){
    myMovie.push(el);
    //localStorage.setItem('myMovie', JSON.stringify(myMovie));
    }

    function remove(title){
     var i=myMovie.findIndex(movie=>movie.title===title);
     if(i!==-1){
       myMovie.splice(i,1);
       //localStorage.setItem('myMovie', JSON.stringify(myMovie));
     }
    }
    
    push({id:"tt3783958", title:"La La Land", year:"2016", type:"Comedy, Drama, Music"});
    console.log(myMovie);
    remove("La La Land");
    console.log(myMovie);




要创建一个正在运行的stackSnippet,我必须删除localStorage功能,它已被注释掉。

答案 2 :(得分:0)

您需要获取对象并设置新对象:

myMovie = JSON.parse(localStorage.getItem("myMovie"));
myMovie.splice(0,1);
localStorage.setItem("myMovie",JSON.stringify(myMovie));