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 面向对象的 私有成员和公开成员
May 13 Javascript
javascript最常用与实用的创建类的代码
Aug 12 Javascript
基于jquery的一个拖拽到指定区域内的效果
Sep 21 Javascript
通过隐藏iframe实现文件下载的js方法介绍
Feb 26 Javascript
使用Script元素发送JSONP请求的方法
Jun 12 Javascript
AngularJs验证重复密码的方法(两种)
Nov 25 Javascript
详解ES6通过WeakMap解决内存泄漏问题
Mar 09 Javascript
iview table render集成switch开关的实例
Mar 14 Javascript
vue-router启用history模式下的开发及非根目录部署方法
Dec 23 Javascript
Javascript三种字符串连接方式及性能比较
May 28 Javascript
微信小程序表单验证WxValidate的使用
Nov 27 Javascript
JS实现可视化音频效果的实例代码
Jan 16 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 如何向 MySQL 发送数据
2006/10/09 PHP
PHP页面中文乱码分析
2013/10/29 PHP
php实现的单一入口应用程序实例分析
2015/09/23 PHP
Laravel学习教程之从入口到输出过程详解
2017/08/27 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
javascript脚本调试方法小结
2008/11/24 Javascript
简略的前端架构心得&&基于editor为例子的编码小技巧
2010/11/25 Javascript
jquery each的几种常用的使用方法示例
2014/01/21 Javascript
JavaScript使用slice函数获取数组部分元素的方法
2015/04/06 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
Javascript日期格式化format函数的使用方法
2016/08/30 Javascript
基于jquery日历价格、库存等设置插件
2020/07/05 jQuery
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
学习jQuery中的noConflict()用法
2018/09/28 jQuery
使用JS判断页面是首次被加载还是刷新
2019/05/26 Javascript
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
[52:03]Secret vs VG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python中的浮点数原理与运算分析
2017/10/12 Python
python中pika模块问题的深入探究
2018/10/13 Python
判断python对象是否可调用的三种方式及其区别详解
2019/01/31 Python
Python去除字符串前后空格的几种方法
2019/03/04 Python
Python 过滤错误log并导出的实例
2019/12/26 Python
keras 如何保存最佳的训练模型
2020/05/25 Python
科颜氏加拿大官方网站: Kiehl’s加拿大
2016/08/16 全球购物
nohup的用法
2012/11/26 面试题
AJax面试题
2014/11/25 面试题
《水上飞机》教学反思
2014/04/10 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
2014高三学生考试作弊检讨书
2014/12/14 职场文书
学校推普周活动总结
2015/05/07 职场文书
2015年档案管理员工作总结
2015/05/13 职场文书
最美乡村教师观后感
2015/06/11 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
Redis如何实现分布式锁
2021/08/23 Redis
Python中的datetime包与time包包和模块详情
2022/02/28 Python