[英]How to remove object from array in 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"}]
我建議您將對象格式化
var first = {"tt3783958": { title:"La La Land", year:"2016", type:"Comedy, Drama, Music"}}
ID將使您的對象具有唯一鍵。 更新也將很容易。
並將它們存儲在JSON對象中,而不是像
myMovie = {}; //note its an object
這將使您更輕松地查詢和刪除項目。
最好是一個函數,它不僅可以更改數組,還可以將其存儲在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功能,它被注釋掉了。
您需要獲取對象並設置一個新對象:
myMovie = JSON.parse(localStorage.getItem("myMovie"));
myMovie.splice(0,1);
localStorage.setItem("myMovie",JSON.stringify(myMovie));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.