JS localStorage存儲(chǔ)對(duì)象,sessionStorage存儲(chǔ)數(shù)組對(duì)象操作示例
本文實(shí)例講述了JS localStorage存儲(chǔ)對(duì)象,sessionStorage存儲(chǔ)數(shù)組對(duì)象操作。分享給大家供大家參考,具體如下:
一、前言
最近在用angular做商城購(gòu)物車(chē)的功能模塊,因?yàn)閍ngular的watch監(jiān)聽(tīng),數(shù)據(jù)只要發(fā)生變化就能很方便的自動(dòng)渲染頁(yè)面。但隨即出現(xiàn)的問(wèn)題是,之前用戶操作的樣式都會(huì)被重置掉。
例如我勾選了幾個(gè)商品準(zhǔn)備結(jié)算,又修改了商品數(shù)量,這時(shí)候發(fā)起了請(qǐng)求,頁(yè)面數(shù)據(jù)被渲染,打鉤的商品全被恢復(fù)未選中。
想著將所有選中商品的獨(dú)有Id存入數(shù)組,利用localStorage存儲(chǔ),每次刷新都取到存儲(chǔ)的數(shù)組,將數(shù)組對(duì)應(yīng)Id的商品再次勾上。結(jié)果出現(xiàn)了下面的問(wè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ù)組存進(jìn)去直接被強(qiáng)轉(zhuǎn)為了字符串類(lèi)型,這明顯不是我想要的,查了下,可以利用json.stringify與JSON.parse的轉(zhuǎn)換達(dá)到目的。
二、存儲(chǔ)數(shù)組
json.stringify可以將對(duì)象轉(zhuǎn)換為 JSON 字符串
JSON.parse可以將 JSON 字符串轉(zhuǎn)換為對(duì)象
那我們存的時(shí)候先將數(shù)組轉(zhuǎn)成JSON字符串,取出來(lái)再轉(zhuǎn)成數(shù)組就可以了,實(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"
三、存儲(chǔ)對(duì)象
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)換值達(dá)到存儲(chǔ)的的方式非常好用,除此之外JSON的方法還能用于深拷貝
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專(zhuān)題:《JavaScript操作DOM技巧總結(jié)》、《JavaScript頁(yè)面元素操作技巧總結(jié)》、《JavaScript事件相關(guān)操作與技巧大全》、《JavaScript查找算法技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
JavaScript es6中var、let以及const三者區(qū)別案例詳解
這篇文章主要介紹了JavaScript es6中var、let以及const三者區(qū)別案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08JavaScript數(shù)據(jù)可視化:ECharts制作地圖
這篇文章主要介紹了Echarts實(shí)現(xiàn)可視化地圖,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-08-08微信小程序scroll-view指定滾動(dòng)元素起始位置怎么做
scroll-view為滾動(dòng)視圖,分為水平滾動(dòng)和垂直滾動(dòng),這篇文章主要給大家介紹了關(guān)于微信小程序scroll-view不能左右滑動(dòng)問(wèn)題的解決方法,需要的朋友可以參考下2022-12-12JavaScript自定義localStorage監(jiān)聽(tīng)事件的解決方法
在項(xiàng)目開(kāi)發(fā)過(guò)程中,發(fā)現(xiàn)有很多時(shí)候進(jìn)行l(wèi)ocalStorage.setItem()操作設(shè)置本地存儲(chǔ)后,頁(yè)面必須刷新才能夠獲取到存儲(chǔ)數(shù)據(jù),為了解決這個(gè)問(wèn)題,就必須要用到自定義localStorage監(jiān)聽(tīng)事件了,所以本文給大家介紹了自定義localStorage監(jiān)聽(tīng)事件,需要的朋友可以參考下2024-10-10Js實(shí)現(xiàn)無(wú)刷新刪除內(nèi)容
本文給大家分享的是一段仿騰訊微博的無(wú)刷新刪除特效的代碼,非常的實(shí)用,有需要的小伙伴可以參考下。2015-04-04JS實(shí)現(xiàn)textarea通過(guò)換行或者回車(chē)把多行數(shù)字分割成數(shù)組并且去掉數(shù)組中空的值
這篇文章主要介紹了JS實(shí)現(xiàn)textarea通過(guò)換行或者回車(chē)把多行數(shù)字分割成數(shù)組并且去掉數(shù)組中空的值的相關(guān)資料,需要的朋友可以參考下2018-10-10由document.body和document.documentElement想到的
不知道大家對(duì)這個(gè)標(biāo)題有沒(méi)有想法,反正此前我一直把他們混為了一談。其實(shí)不然,首先需有個(gè)“標(biāo)準(zhǔn)”的概念。2009-04-04javascript中break,continue和return語(yǔ)句用法小結(jié)
break,continue和return這三個(gè)語(yǔ)句的用法新手們經(jīng)常弄混淆,至少在我學(xué)習(xí)c語(yǔ)言的時(shí)候經(jīng)常把它們的用法給搞錯(cuò)。不過(guò)現(xiàn)在好了,我已徹底搞清楚它們之間的用法2012-05-05