2017-06-04 136 views
0

我有阵列是这样的:如何从本地存储中的阵列中删除对象?

var myMovie = []; 

和对象像这样:

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

按钮加入对象到本地存储阵列经由OnClick()。这里

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

我的问题是,我怎么可能通过变量名中删除整个对象:

$(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')); 

加入对象到本地存储后,本地存储看起来是这样的?我想从myMovie删除对象first。对象的索引位置可能是每次不同

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

这是一个不同的例子,我也试过你的解决方案,但它不适用于我的代码。 – Slasher

+0

nope。代码保持不变。 –

+0

问题你以前的代码是什么都没有发生,我只是得到一些控制台错误。你能告诉我这个代码的例子吗? – Slasher

回答

1

最好是一个函数,它不仅更改数组,而且还将其存储在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的功能,它被注释掉了。

0

你需要获取对象和设置新的:

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

这似乎创建了一个新的'myMovie'数组。它的设置是删除第一个索引,而不是通过变量名'first'删除。 – Slasher

1

我会建议你有你的对象格式

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

ID将会使你的对象有唯一的密钥。更新也很容易。

而这些存储在一个JSON对象,而不是像

myMovie = {}; //note its an object 

这个数组将使您更容易查询和删除项目。

+0

第一行中的语法错误,意外的char: –