[英]LocalStorage remove item from object using JavaScript
我想從 localstorage object 中刪除一個項目:
addToFavs: [{"fav-name":"fav-787336"},{"fav-name":"fav-255890"}]
我存儲了信息,然后檢查是否找到該項目,我應該將其刪除:
/*** getID is the items clicked ***/
var retrievedData = localStorage.getItem("addToFavs");
var parseData = jQuery.parseJSON(retrievedData);
$.each(parseData, function(x,y){
if(y['fav-name'] == getID){
console.log(getID+' found on '+x);
console.log(parseData[x]);
localStorage.removeItem(parseData[x]);
console.log(x+' removed');
} else {
console.log(getID+' NOT NOT found on '+x);
}
}); // end $.each
提前致謝
你不能做這個:
localStorage.removeItem(parseData[x]);
您需要更新您解析的數組,或者創建一個新數組,然后將其stringify
回 JSON 和setItem
以更新 localStorage 中的值。 因為localStorage只能存儲Strings,不能存儲Arrays或者Objects。
filter
將是一個很好的方法:
var jsonString = localStorage.getItem("addToFavs");
var arr = JSON.parse(jsonString);
// Filter to keep only those with a different ID than getID
arr = arr.filter(function(item) { return item['fav-name'] !== getID; });
// Store it back, stringified
localStorage.setItem("addToFavs", JSON.stringify(arr));
不要嚇到你什么的
addToFavs: [{"fav-name":"fav-787336"},{"fav-name":"fav-255890"}]
。 <---- 在這行代碼中addToFavs
是本地存儲中的項目,而不是您存儲的 object。
並且本地存儲僅支持將 string:string 類型存儲為 item:value,因此
localStorage.removeItem(parseData[x]);
<--- 這行代碼在這里試圖尋找一個項目,在你的情況下
這實際上在您的字符串化 object 內部,它本身就是addToFavs
項目的價值,
因此,您必須從 object 中刪除該項目並再次存儲addToFavs
,如下所示。
var ls = window.localStorage; ls.setItem('addToFavs', '[{"fav-name":"fav-787336"},{"fav-name":"fav-255890"}]'); var getId = 'fav-787336'; var item = JSON.parse(ls.getItem('addToFavs')); var updatedItems = item.filter(val => (val['fav-name'] === getId)); console.log(updatedItems); //update loacl storage again ls.setItem('addToFavs', JSON.stringify(updatedItems))
由於出於安全考慮,未授予 localStorage 訪問權限,因此代碼將無法運行,請隨意在瀏覽器控制台中運行代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.