JS localStorage存储对象,sessionStorage存储数组对象操作示例


Posted in Javascript onFebruary 15, 2020

本文实例讲述了JS localStorage存储对象,sessionStorage存储数组对象操作。分享给大家供大家参考,具体如下:

一、前言

最近在用angular做商城购物车的功能模块,因为angular的watch监听,数据只要发生变化就能很方便的自动渲染页面。但随即出现的问题是,之前用户操作的样式都会被重置掉。

例如我勾选了几个商品准备结算,又修改了商品数量,这时候发起了请求,页面数据被渲染,打钩的商品全被恢复未选中。

想着将所有选中商品的独有Id存入数组,利用localStorage存储,每次刷新都取到存储的数组,将数组对应Id的商品再次勾上。结果出现了下面的问题:

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

很明显,数组存进去直接被强转为了字符串类型,这明显不是我想要的,查了下,可以利用json.stringify与JSON.parse的转换达到目的。

二、存储数组

json.stringify可以将对象转换为 JSON 字符串

JSON.parse可以将 JSON 字符串转换为对象

那我们存的时候先将数组转成JSON字符串,取出来再转成数组就可以了,实现如下。

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转换值达到存储的的方式非常好用,除此之外JSON的方法还能用于深拷贝

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《JavaScript操作DOM技巧总结》、《JavaScript页面元素操作技巧总结》、《JavaScript事件相关操作与技巧大全》、《JavaScript查找算法技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript错误与调试技巧总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript 设计模式之组合模式解析
Apr 09 Javascript
基于jquery的web页面日期格式化插件
Nov 15 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
Jun 14 Javascript
js实现的折叠导航示例
Nov 29 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
Dec 04 Javascript
js计算任意值之间随机数的方法
Jan 16 Javascript
TypeScript学习之强制类型的转换
Dec 27 Javascript
Angular2 Service实现简单音乐播放器服务
Feb 24 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
Mar 07 Javascript
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
Apr 28 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
May 09 Javascript
如何阻止小程序遮罩层下方图层滚动
Sep 05 Javascript
ES6 proxy和reflect的使用方法与应用实例分析
Feb 15 #Javascript
js表达式与运算符简单操作示例
Feb 15 #Javascript
ES6 class类链式继承,实例化及react super(props)原理详解
Feb 15 #Javascript
ES6 Iterator遍历器原理,应用场景及相关常用知识拓展详解
Feb 15 #Javascript
es6 super关键字的理解与应用实例分析
Feb 15 #Javascript
es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析
Feb 15 #Javascript
Vue父子传递实例讲解
Feb 14 #Javascript
You might like
ThinkPHP CURD方法之page方法详解
2014/06/18 PHP
PHP常用处理静态操作类
2015/04/03 PHP
javascript onmouseout 解决办法
2010/07/17 Javascript
浅析JQuery获取和设置Select选项的常用方法总结
2013/07/04 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
2015/01/23 Javascript
jquery插件orbit.js实现图片折叠轮换特效
2015/04/14 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
2015/12/28 Javascript
jQuery实现的多滑动门,多选项卡效果代码
2016/03/28 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
2016/12/28 Javascript
Bootstrap3 图片(响应式图片&图片形状)
2017/01/04 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
Vue filter介绍及详细使用
2018/04/04 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
Python中IPYTHON入门实例
2015/05/11 Python
python编码最佳实践之总结
2016/02/14 Python
python+opencv+caffe+摄像头做目标检测的实例代码
2018/08/03 Python
python简单实现AES加密和解密
2019/03/28 Python
如何基于python实现归一化处理
2020/01/20 Python
Opencv求取连通区域重心实例
2020/06/04 Python
Python 中如何使用 virtualenv 管理虚拟环境
2021/01/21 Python
HTML5实现获取地理位置信息并定位功能
2015/04/25 HTML / CSS
2014年大学庆元旦迎新年活动方案
2014/03/09 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
政风行风评议心得体会
2014/10/21 职场文书
2014年防汛工作总结
2014/12/08 职场文书
2015年幼儿园元旦游艺活动策划书
2014/12/09 职场文书
优秀共产党员推荐材料
2014/12/18 职场文书
优秀工作者事迹材料
2014/12/26 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
jquery插件实现图片悬浮
2021/04/16 jQuery
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python
python游戏开发之pygame实现接球小游戏
2022/04/22 Python
解决Mysql中的innoDB幻读问题
2022/04/29 MySQL