在浏览器中存储数组和对象(js的问题)

有时候在使用 JavaScript 的时候,开发者可能会想使用 "localStorage" 来方便地存储数据。但一个常见的错误是试图按原样把数组和对象存到 "localStorage" 里。"localStorage" 只接受字符串。

为了存储对象,JavaScript 会把对象转成字符串。结果就是 object 会变成 "[Object Object]",数组元素会变成用逗号分隔的字符串。

例如:

​​const obj = { name: "JavaScript" };
​​window.localStorage.setItem("test-object", obj);
​​console.log(window.localStorage.getItem("test-object"));
​​// [Object Object]
​​const arr = ["JavaScript", "programming", 45];
​​window.localStorage.setItem("test-array", arr);
​​console.log(window.localStorage.getItem("test-array"));
​​// JavaScript, programming, 45

对象被这样存储起来的话,就会很难访问它们。以 object 为例,用 ".name" 的方式去访问 object 就会导致异常。这是因为 "[Object Object]" 已经是一个字符串了,它并没有 "name" 属性。

想要在 localStorage 里存储对象和数组,更好的方式是使用 "JSON.stringify"(用于把对象转换成字符串)和 "JSON.parse"(用于把字符串转换成对象)。这样就可以很容易地访问对象了。

上面的代码正确的版本应该是:

​​const obj = { name: "JavaScript" };
​​window.localStorage.setItem("test-object", JSON.stringify(obj));
​​const objInStorage = window.localStorage.getItem("test-object");
​​console.log(JSON.parse(objInStorage));
​​// {name: 'JavaScript'}
​​const arr = ["JavaScript", "programming", 45];
​​window.localStorage.setItem("test-array", JSON.stringify(arr));
​​const arrInStorage = window.localStorage.getItem("test-array");
​​console.log(JSON.parse(arrInStorage));
​​// JavaScript, programming, 45

相关推荐

  1. 浏览器存储对象js问题

    2023-12-15 04:38:03       37 阅读
  2. Js实用语法

    2023-12-15 04:38:03       33 阅读
  3. js对象转换为两种方法

    2023-12-15 04:38:03       36 阅读
  4. lodash库函数处理嵌套对象函数

    2023-12-15 04:38:03       30 阅读
  5. 浏览器存储token最佳实践

    2023-12-15 04:38:03       28 阅读
  6. 遍历里面对象

    2023-12-15 04:38:03       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-15 04:38:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-15 04:38:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-15 04:38:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-15 04:38:03       18 阅读

热门阅读

  1. centos7配置国内源

    2023-12-15 04:38:03       35 阅读
  2. Python基础List列表定义与函数

    2023-12-15 04:38:03       41 阅读
  3. 【Python】正则表达式

    2023-12-15 04:38:03       35 阅读
  4. 在MFC(Microsoft Foundation Classes)中 CreateThread函数

    2023-12-15 04:38:03       33 阅读
  5. CSS BFC详解

    2023-12-15 04:38:03       37 阅读
  6. C#教程(二):继承

    2023-12-15 04:38:03       34 阅读
  7. Kotlin 中的 `as` 关键字:类型转换的艺术

    2023-12-15 04:38:03       35 阅读
  8. linux下使用tc控制和模拟网络流量

    2023-12-15 04:38:03       30 阅读
  9. 扫雷/python中*解包作用

    2023-12-15 04:38:03       38 阅读
  10. Linux——MySQL备份与恢复

    2023-12-15 04:38:03       34 阅读
  11. 深入探索 Rust 宏编程

    2023-12-15 04:38:03       33 阅读