溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JS中l(wèi)ocalStorage存儲(chǔ)對(duì)象和sessionStorage存儲(chǔ)數(shù)組對(duì)象的示例分析

發(fā)布時(shí)間:2021-07-09 10:25:06 來源:億速云 閱讀:161 作者:小新 欄目:web開發(fā)

小編給大家分享一下JS中l(wèi)ocalStorage存儲(chǔ)對(duì)象和sessionStorage存儲(chǔ)數(shù)組對(duì)象的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

一、前言

最近在用angular做商城購物車的功能模塊,因?yàn)閍ngular的watch監(jiān)聽,數(shù)據(jù)只要發(fā)生變化就能很方便的自動(dòng)渲染頁面。但隨即出現(xiàn)的問題是,之前用戶操作的樣式都會(huì)被重置掉。

例如我勾選了幾個(gè)商品準(zhǔn)備結(jié)算,又修改了商品數(shù)量,這時(shí)候發(fā)起了請(qǐng)求,頁面數(shù)據(jù)被渲染,打鉤的商品全被恢復(fù)未選中。

想著將所有選中商品的獨(dú)有Id存入數(shù)組,利用localStorage存儲(chǔ),每次刷新都取到存儲(chǔ)的數(shù)組,將數(shù)組對(duì)應(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ù)組存進(jìn)去直接被強(qiáng)轉(zhuǎn)為了字符串類型,這明顯不是我想要的,查了下,可以利用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字符串,取出來再轉(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的方法還能用于深拷貝

看完了這篇文章,相信你對(duì)“JS中l(wèi)ocalStorage存儲(chǔ)對(duì)象和sessionStorage存儲(chǔ)數(shù)組對(duì)象的示例分析”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI