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 相关文章推荐
Array.slice()与Array.splice()的返回值类型
Oct 09 Javascript
JavaScript去掉数组中的重复元素
Jan 13 Javascript
Jquery遍历checkbox获取选中项value值的方法
Feb 13 Javascript
javascript控制层显示或隐藏的方法
Jul 22 Javascript
angularJS 如何读写缓冲的方法(推荐)
Aug 06 Javascript
详细分析Javascript中创建对象的四种方式
Aug 17 Javascript
基于Bootstrap分页的实例讲解(必看篇)
Jul 04 Javascript
JavaScript实现小球沿正弦曲线运动
Sep 07 Javascript
vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法
Nov 05 Javascript
JavaScript数组去重实现方法小结
Jan 17 Javascript
解决小程序无法触发SESSION问题
Feb 03 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
Dec 04 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
轻松入门: 煮好咖啡的七个诀窍
2021/03/03 冲泡冲煮
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
2010/12/29 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
WordPress中"无法将上传的文件移动至"错误的解决方法
2015/07/01 PHP
学习php设计模式 php实现模板方法模式
2015/12/08 PHP
基于Web标准的UI组件 — 树状菜单(2)
2006/09/18 Javascript
js压缩利器
2007/02/20 Javascript
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
jquery、js调用iframe父窗口与子窗口元素的方法整理
2014/07/31 Javascript
js实现碰撞检测特效代码分享
2016/10/16 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
Map.vue基于百度地图组件重构笔记分享
2017/04/17 Javascript
angularjs $http实现form表单提交示例
2017/06/09 Javascript
react实现菜单权限控制的方法
2017/12/11 Javascript
在一个页面实现两个zTree联动的方法
2017/12/20 Javascript
nodejs的路径问题的解决
2018/06/30 NodeJs
JS插件clipboard.js实现一键复制粘贴功能
2020/12/04 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
vue+高德地图实现地图搜索及点击定位操作
2020/09/09 Javascript
详细分析JavaScript中的深浅拷贝
2020/09/17 Javascript
[03:11]TI9战队档案 - Alliance
2019/08/20 DOTA
用Python编写简单的微博爬虫
2016/03/04 Python
python将txt文档每行内容循环插入数据库的方法
2018/12/28 Python
Python tkinter制作单机五子棋游戏
2020/09/14 Python
Scrapy 配置动态代理IP的实现
2020/09/28 Python
python中字典增加和删除使用方法
2020/09/30 Python
python des,aes,rsa加解密的实现
2021/01/16 Python
CSS3的Border-radius轻松制作圆角
2012/12/24 HTML / CSS
Vision Directa智利眼镜网:框架眼镜、隐形眼镜和名牌太阳眼镜
2016/11/23 全球购物
介绍一下grep命令的使用
2012/06/28 面试题
保密工作目标责任书
2014/07/28 职场文书
2014年幼儿园工作总结
2014/11/10 职场文书
浅谈Redis中的RDB快照
2021/06/29 Redis
使用compose函数优化代码提高可读性及扩展性
2022/06/16 Javascript