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 相关文章推荐
JS修改css样式style浅谈
May 06 Javascript
多次注册事件会导致一个事件被触发多次的解决方法
Aug 12 Javascript
JavaScript中的eval()函数详解
Aug 22 Javascript
js完美的div拖拽实例代码
Jan 22 Javascript
浅谈Jquery为元素绑定事件
Apr 27 Javascript
js正则匹配出所有图片及图片地址src的方法
Jun 08 Javascript
javascript中字体浮动效果的简单实例演示
Nov 18 Javascript
浅析node连接数据库(express+mysql)
Nov 30 Javascript
JS判断字符串字节数并截取长度的方法
Mar 05 Javascript
vue实现app页面切换动画效果实例
May 23 Javascript
JavaScript基础之this和箭头函数详析
Sep 05 Javascript
解决layui弹出层layer的area过大被遮挡的问题
Sep 21 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+Uploadify实现图片上传功能
2014/06/26 PHP
PHP中strtr字符串替换用法详解
2014/11/26 PHP
初识ThinkPHP控制器
2016/04/07 PHP
PHP-X系列教程之内置函数的使用示例
2017/10/16 PHP
PHP使用Http Post请求发送Json对象数据代码解析
2020/07/16 PHP
Firefox和IE浏览器兼容JS脚本写法小结
2008/07/07 Javascript
基于jQuery的图片大小自动适应实现代码
2010/11/17 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
js左侧三级菜单导航实例代码
2013/09/13 Javascript
采用call方式实现js继承
2014/05/20 Javascript
javaScript的函数对象的声明详解
2015/02/06 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
jQuery实现文件上传进度条特效
2015/08/12 Javascript
js canvas实现简单的图像扩散效果
2020/06/28 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
2019/04/24 Javascript
vue计算属性无法监听到数组内部变化的解决方案
2019/11/06 Javascript
Vuex实现数据共享的方法
2019/12/20 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
2020/04/26 Javascript
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
Python脚本文件打包成可执行文件的方法
2015/06/02 Python
Python内置数据结构与操作符的练习题集锦
2016/07/01 Python
Python文件与文件夹常见基本操作总结
2016/09/19 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
2017/06/27 Python
Pandas读写CSV文件的方法示例
2019/03/27 Python
快速查找Python安装路径方法
2020/02/06 Python
python通用读取vcf文件的类(复制粘贴即可用)
2020/02/29 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
python palywright库基本使用
2021/01/21 Python
Django url 路由匹配过程详解
2021/01/22 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
关于诚信的活动方案
2014/08/18 职场文书
2015年机关纠风工作总结
2015/05/15 职场文书
2015七夕情人节宣传语
2015/07/14 职场文书
《西门豹》教学反思
2016/02/23 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书
python基础之匿名函数详解
2021/04/21 Python