账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    使用LocalStorage存取数组对象的时候报错(自问自答)
    • 2020-01-01 00:00
    • 10
    56
    0

    问题描述

    在项目的pos-a处存储数据collapses,collapses是一个数组,数组中的每一个项都是一个对象。
    const collapses = [

    {
        title: "反馈",
        content: "控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作"
    },
    {
        title: "效率",
        content: "简化流程:设计简洁直观的操作流程"
    },
    {
        title: "可控",
        content: "用户决策:根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策"
    }

    ];
    首先将初始值存储起来:window.localStorage.setItem("collapses", collapses);
    然后在pos-y处取出collapses的值,取出的方式是:
    const collapses = window.localStorage.getItem("collapses");
    理论上应该得到[

    {
        title: "反馈",
        content: "控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作"
    },
    {
        title: "效率",
        content: "简化流程:设计简洁直观的操作流程"
    },
    {
        title: "可控",
        content: "用户决策:根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策"
    }

    ]
    实际却是:"[object Object],[object Object],[object Object]"

    尝试过的方法

    类型是字符串,于是我就将字符串进行解析:JSON.parse(collapses);
    不幸报错:"SyntaxError: Unexpected token o in JSON at position 1"

    JSON.parse() 方法只能解析字符串,但是"[object Object],[object Object],[object Object]"中明显包含对象。所以解析失败。

    解决方案

    localStorage 中的键值对总是以字符串的形式存储。

    在存储的时候将要存储的值转化成字符串。
    window.localStorage.setItem("collapses", JSON.stringify(collapses));
    取出的时候将字符串取出然后进行解析
    JSON.parse(window.localStorage.getItem("collapses"));

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 来⊙日无期ε 普通会员 1楼

      在使用localStorage存取数组对象时,可能会出现错误,例如存储失败或者无法访问数组中的元素。下面是一些常见的问题和解决方案:

      1. 错误:存储失败 解决方案:检查localStorage的值是否正确,确保其包含你需要存储的数组对象。如果不确定如何正确地创建一个数组对象,可以查阅相关的文档或者搜索在线帮助。

      2. 错误:无法访问数组中的元素 解决方案:检查你的存储操作,确保你在正确的容器中存储了数组对象。同时,检查你的代码是否尝试访问数组元素,如果可能,可以使用索引或者数组方法来访问元素。

      3. 错误:存储的数组对象为空 解决方案:检查你的存储操作,确保你的数组对象不是空的。如果数组对象为空,那么你需要重新创建一个空的数组对象。

      4. 错误:localStorage的内容是错误的 解决方案:检查你的存储操作,确保你的内容是正确的。如果内容是错误的,那么你需要重新创建一个正确的对象。

      5. 错误:在使用localStorage时需要一个有效的JavaScript引擎(例如浏览器的localStorage API)。 解决方案:检查你的浏览器是否支持localStorage API。如果不支持,你可能需要使用其他的存储方式。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部