【问题标题】:Local Storage Error on array push阵列推送时出现本地存储错误
【发布时间】:2023-04-10 11:02:01
【问题描述】:

我正在使用本地存储进行一些测试。在我对数组的测试中,我被困在数组部分(推)。

我做了什么:

if (localStorage.myArray) {
    localStorage.myArray.push("Green");
} else {
    localStorage.myArray = ["Red", "Blue"];
}

这会返回一个错误:

Uncaught TypeError: localStorage.myArray.push is not a function

我知道本地存储项总是字符串,但我不知道它在数组中是如何工作的。

【问题讨论】:

标签: javascript arrays html local-storage


【解决方案1】:

由于 localStorage 只接受字符串,因此您必须使用 JSON.stringify 将数组转换为 JSON 字符串。在对“数组”执行进一步操作时,将 JSON 字符串解析为数组。像这样的

if (localStorage.myArray) {
    var myArray = JSON.parse(localStorage.myArray);
    myArray.push("Green");
    localStorage.myArray = JSON.stringify(myArray);
} else {
    localStorage.myArray = JSON.stringify(["Red", "Blue"]);
}

【讨论】:

  • 嗯,JSON 转换是我需要的。谢谢。
【解决方案2】:
if (localStorage.myArray) {
    var myArray = localStorage.myArray.split(',');
    myArray.push("Green");
    localStorage.myArray = myArray;
} else {
   localStorage.myArray = ["Red", "Blue"];
}

【讨论】:

  • 这很好,但如果数组是["Hello, Red", "Hello, Green"]
  • 那么您的解决方案会更合适。但在这个特定的用例中,拆分是最快的方法。
猜你喜欢
  • 2011-04-29
  • 2021-12-22
  • 1970-01-01
  • 2013-10-07
  • 2016-04-07
  • 2013-03-28
  • 2013-02-14
  • 2020-01-21
  • 1970-01-01
相关资源
最近更新 更多