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 相关文章推荐
prototype class详解
Sep 07 Javascript
js中apply方法的使用详细解析
Nov 04 Javascript
JavaScript中判断函数、变量是否存在
Jun 10 Javascript
微信小程序 触控事件详细介绍
Oct 17 Javascript
用headjs来管理和加载js 提高网站加载速度
Nov 29 Javascript
深入理解vue路由的使用
Mar 24 Javascript
对象不支持indexOf属性或方法的解决方法(必看)
May 28 Javascript
浅谈原生JS中的延迟脚本和异步脚本
Jul 12 Javascript
微信小程序如何使用globalData的方法
Jun 06 Javascript
vue-cli 为项目设置别名的方法
Oct 15 Javascript
p5.js临摹动态图形的方法
Oct 23 Javascript
js实现移动端图片滑块验证功能
Sep 29 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
如何使用PHP往windows中添加用户
2006/12/06 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
2015/04/27 PHP
PHP实现递归目录的5种方法
2016/10/27 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
PHP智能识别收货地址信息实例
2019/01/05 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
dojo学习第二天 ajax异步请求之绑定列表
2011/08/29 Javascript
javascript学习笔记(八) js内置对象
2012/06/19 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
2014/12/16 Javascript
javascript中动态函数用法实例分析
2015/05/14 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
详解Vue自定义过滤器的实现
2017/01/10 Javascript
浅谈$_FILES数组为空的原因
2017/02/16 Javascript
Javascript中Promise的四种常用方法总结
2017/07/14 Javascript
vue 实现在函数中触发路由跳转的示例
2018/09/01 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
vue单页应用的内存泄露定位和修复问题小结
2019/08/02 Javascript
javascript将16进制的字符串转换为10进制整数hex
2020/03/05 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
python实现类的静态变量用法实例
2015/05/08 Python
Python3指定路径寻找符合匹配模式文件
2015/05/22 Python
python开发之thread线程基础实例入门
2015/11/11 Python
简单了解python模块概念
2018/01/11 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
2019/01/30 Python
修改 CentOS 6.x 上默认Python的方法
2019/09/06 Python
Python实现代码统计工具
2019/09/19 Python
Interrail法国:乘火车探索欧洲,最受欢迎的欧洲铁路通票
2019/08/27 全球购物
美国沙龙美发产品购物网站:Hair.com by L’Oreal
2020/11/09 全球购物
职业生涯规划书怎么写?
2014/09/14 职场文书
放假通知范文
2015/04/14 职场文书
高中升旗仪式主持词
2015/07/03 职场文书
高性能跳频抗干扰宽带自组网电台
2022/02/18 无线电
Python安装及建立虚拟环境的完整步骤
2022/06/25 Servers
VMware虚拟机安装 Windows Server 2022的详细图文教程
2022/09/23 Servers