JS localStorage存儲對象,sessionStorage存儲數(shù)組對象操作示例
本文實例講述了JS localStorage存儲對象,sessionStorage存儲數(shù)組對象操作。分享給大家供大家參考,具體如下:
一、前言
最近在用angular做商城購物車的功能模塊,因為angular的watch監(jiān)聽,數(shù)據(jù)只要發(fā)生變化就能很方便的自動渲染頁面。但隨即出現(xiàn)的問題是,之前用戶操作的樣式都會被重置掉。
例如我勾選了幾個商品準(zhǔn)備結(jié)算,又修改了商品數(shù)量,這時候發(fā)起了請求,頁面數(shù)據(jù)被渲染,打鉤的商品全被恢復(fù)未選中。
想著將所有選中商品的獨有Id存入數(shù)組,利用localStorage存儲,每次刷新都取到存儲的數(shù)組,將數(shù)組對應(yīng)Id的商品再次勾上。結(jié)果出現(xiàn)了下面的問題:
var a = [1,2,3]; window.localStorage.setItem('key',a); var b = window.localStorage.getItem('key'); console.log(b,typeof b);//1,2,3 string
很明顯,數(shù)組存進去直接被強轉(zhuǎn)為了字符串類型,這明顯不是我想要的,查了下,可以利用json.stringify與JSON.parse的轉(zhuǎn)換達到目的。
二、存儲數(shù)組
json.stringify可以將對象轉(zhuǎn)換為 JSON 字符串
JSON.parse可以將 JSON 字符串轉(zhuǎn)換為對象
那我們存的時候先將數(shù)組轉(zhuǎn)成JSON字符串,取出來再轉(zhuǎn)成數(shù)組就可以了,實現(xiàn)如下。
function storageObj(obj) { var checkedIdStr = JSON.stringify(obj); sessionStorage.setItem("key", checkedIdStr); }; var arrBefor = [1,2,3]; storageObj(arrBefor); var arrAfter = JSON.parse(sessionStorage.getItem("key")); console.log(arrAfter,typeof arrAfter);//[1, 2, 3] "object"
三、存儲對象
function storageObj(obj) { var checkedIdStr = JSON.stringify(obj); sessionStorage.setItem("key", checkedIdStr); }; var objBefor = { a:1, b:2 }; storageObj(objBefor); var objAfter = JSON.parse(sessionStorage.getItem("key")); console.log(objAfter,typeof objAfter);//{a: 1, b: 2} "object"
利用JSON轉(zhuǎn)換值達到存儲的的方式非常好用,除此之外JSON的方法還能用于深拷貝
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript操作DOM技巧總結(jié)》、《JavaScript頁面元素操作技巧總結(jié)》、《JavaScript事件相關(guān)操作與技巧大全》、《JavaScript查找算法技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript錯誤與調(diào)試技巧總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
相關(guān)文章
基于BootStrap的Metronic框架實現(xiàn)頁面鏈接收藏夾功能按鈕移動收藏記錄(使用Sortable進行拖動排序)
這篇文章主要介紹了基于BootStrap的Metronic框架實現(xiàn)頁面鏈接收藏夾功能按鈕移動收藏記錄(使用Sortable進行拖動排序)的相關(guān)資料,非常不錯,需要的朋友可以參考下2016-08-08JavaScript實現(xiàn)讀取上傳視頻文件的時長和第一幀畫面過程講解
當(dāng)我們做一個后臺系統(tǒng)的音視頻管理模塊時,通常要限制文件的大小和類型,這篇文章主要介紹了JavaScript實現(xiàn)讀取上傳視頻文件的時長和第一幀畫面過程,需要詳細(xì)了解實現(xiàn)方法可以參考下文2023-05-05document.getElementById方法在Firefox與IE中的區(qū)別
相信很多朋友在寫JavaScript的時候,對瀏覽器的兼容問題會感到很頭疼。這不,煩什么,什么就來了,特記錄下來,與大家分享。2010-05-05javascript獲取鼠標(biāo)點擊元素對象(示例代碼)
本篇文章主要介紹了利用javascript獲取鼠標(biāo)點擊元素對象的示例代碼。需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12JS鮮為人知的問題之[] == ![]結(jié)果為true、而{} == !{}卻為false
這篇文章主要給大家介紹了關(guān)于JS鮮為人知的問題之[] == ![]結(jié)果為true、而{} == !{}卻為false的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05