当前位置: 首页 > 知识库问答 >
问题:

解析检索到的localStorage项会在控制台中产生不希望的结果

夏飞跃
2023-03-14

我正在使用localStorage制作一个便笺web应用程序,当用户提交便笺时,来自input和textarea的值将保存在一个对象中。

创建的每个注释都是一个包含键/值对的对象

  • id:0
  • 标题:输入值
  • 内容:来自textarea的值

在创建新注释时,localStorage包含至少一个带有字符串的项之后,我将获取/检索localStorage字符串,该字符串将包含以前以字符串格式输入的注释。

>

每次将保存到输入对象中的新输入值推送到数组中,然后使用数组设置localstore项(当然是Stringify)。

下面是负责将注释保存到本地存储的函数

    // User clicks to save note
    post_note_button.onclick = function() {

    // Get values from input and textarea
    var note_title = document.getElementById("note-title").value;
    var note_textarea = document.getElementById("note-textarea").value;

    // Each time note is created, new values from input will be saved
    var input = { id: note_id_count, title: note_title, content: note_textarea };

    // ------------------------------------------------

    switch(localStorage.getItem("note")) {

        // If retrieve for localStorage item returns false/doesn't exist
        // PURPOSE: Set localStorage string for first time
        // 1. Create localStorage item with values from user's input
        case null:
            localStorage.setItem("note", JSON.stringify(input));
        break;

        // If retrieve for localStorage item returns true/exists
        // PURPOSE: To retrieve localStorage string and manipulate it
        // 1. Changing localStorage string, requires string to be retrieved and saved as array
        // 2. Add item to array
        // 3. Create/set localStorage item with values from array, convert to string
        default:
            var note_array = [JSON.parse(localStorage.getItem("note"))];
            console.log(note_array);

            note_array.push(input);

            localStorage.setItem("note", JSON.stringify(note_array));
        break;
    }

    // ------------------------------------------------ 
};

我的问题是:当我console.log

Array [ Object, Object, Object ]

相反,我得到:

Array [ Array[2], Object ]

代码笔:http://codepen.io/anon/pen/JdjMYq

共有1个答案

慕弘义
2023-03-14

看起来,当您将第一项保存到localstore(当那里什么都没有时)时,您只是将其保存为对象。然后,当您添加下一项时,将其包装在数组中。

相反,您可以保存包装在数组中的原始对象,然后将其推到该数组上:

case null:
  localStorage.setItem("note", JSON.stringify([input]));
  break;

--

default:
    var note_array = JSON.parse(localStorage.getItem("note"));
    console.log(note_array);

    note_array.push(input);

    localStorage.setItem("note", JSON.stringify(note_array));
    break;

看到这个叉形密码笔了吗

 类似资料:
  • 你好,我希望你们能帮我解决一个困扰我几天的问题。当我将脚本的结果导出到csv文件时,我无法得到正确的输出。

  • 我正在使用OpenNLP处理诸如“在洛杉矶工作的医生”和“住在好莱坞并在圣莫尼卡工作的女性”之类的查询。对于理解人类的英语来说,这些句子很明显,主题是“医生”和“女性”。然而,当我使用opennlp时,它将句子标记为 [女性生活][好莱坞] 这是另一个句子“住在圣莫尼卡、在马里布工作和踢足球的人”被处理为 为什么OpenNLP的POS标记器错误地标记了它们?这些句子有最简单的语法结构。如果最先进的

  • 我在NetBeans IDE中使用Java编写了一个简单的程序。在今天早上对main方法做了一些更改后,当我运行程序时,控制台不会打印任何东西。我只是想让它到达startMenus(sc)。编辑:我现在已经放入了一些system.out.println(),但它没有达到“blah2”,就在我的第一个循环之后...

  • 问题内容: 我希望这不是重复的。 我试图用来在单独的控制台中打开脚本。我尝试设置参数,但是没有成功。 我在64位Windows 7上使用32位Python 2.7。 问题答案: 如果不使用,则必须提供列表而不是命令字符串,例如: 然后将其打开而没有外壳。 这是您可以从Python调用子流程的最手动,最灵活的方式。如果只需要输出,请执行以下操作:

  • 我试着写一些关于主题的消息,但是控制台不允许(生产者不等待标准输入)。我也看不到任何错误日志。尽管主题已成功创建。我正在使用: 动物园管理员和Kafka服务器运行良好。我使用的是苹果电脑。可能的问题是什么。我正在关注阿帕奇Kafka文档 http://kafka.apache.org/documentation.html#quickstart。

  • 本文向大家介绍asp.net-core 检索控制器上的依赖项,包括了asp.net-core 检索控制器上的依赖项的使用技巧和注意事项,需要的朋友参考一下 示例 注册后,可以通过在Controller构造函数上添加参数来检索依赖关系。            

  • 问题内容: 我在Windows 10上运行Python2.7,使用Anaconda进行环境和大多数pkg管理。升级了许多软件包后,我的ipython控制台现在无法在任何IDE或控制台中启动。当我尝试在控制台上运行它时,出现此错误: 我尝试做的第一件事是: 输出: 我已经卸载并重新安装了ipython 和 仍然行不通。请帮忙! 问题答案: 尝试这个