javascript 本地存储中JSON.parse()问题

of1yzvn4  于 2022-12-10  发布在  Java
关注(0)|答案(4)|浏览(184)

我目前正在做一个小的浏览器游戏,我正在使用HTML localStorage来保存一些数据。
问题在于:我有一个空数组,我稍后会将一些数据.push()到其中。我将此数组存储在localStorage中,但当我尝试从本地存储读取时,它不工作。
Chrome开发者工具控制台显示以下错误:“未捕获的语法错误:尝试解析localStorage中的数据时出现意外标记u”。
下面是我使用的代码:

var allContracts = [];
localStorage["allContracts"] = JSON.stringify(allContracts);

allContracts = JSON.parse(localStorage["allContracts"]);

还有比这更多的代码,但没有一个以任何方式与这些交互。
是不是localStorage或JSON有什么我不知道的怪癖,导致了这个问题?(我对JSON或localStorage不是很熟悉)我应该用不同的方法来做这个吗?或者我只是错过了一个明显的错误?
提前感谢:)

siv3szwd

siv3szwd1#

最好的方法是使用localStorage接口提供给你的方法。它有setItem()getItem()方法,所以为什么不使用来保护你自己呢?

var allContracts = [];
// setter
localStorage.setItem("allContracts",  JSON.stringify(allContracts));
//getter
var allContracts = JSON.parse(localStorage.getItem("allContracts"));

在您的这段代码中,您使用自己的值覆盖了localStorage全局对象,因此丢失了该功能。
你这样做:

localStorage = [] // transform the default localstorage into an array

你需要这个:

localStorage.setItem(key, value)

更多信息:https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

wydwbb8l

wydwbb8l2#

我自己才刚刚开始使用localStorqage,但看起来您应该使用window.localStorage.setItem()和window.localStorage.getItem()

50pmv0ei

50pmv0ei3#

您可以像这样使用可重用方法

export const localData = {
    set(key, value) {
        localStorage.setItem(key, JSON.stringify(value));
    },
    get(key) {
        const stored = localStorage.getItem(key);
        return stored == null ? undefined : JSON.parse(stored);
    },
    remove(key, value) {
        localStorage.removeItem(key);
    }
};

localData.set("user_name", "serialCoder")
console.log( "After set 👉", localData.get("user_name") )

localData.remove("user_name")
console.log( "After remove 👉", localData.get("user_name") )
dgsult0t

dgsult0t4#

您应该使用

localStorage.setItem('allContracts', JSON.stringify(allContracts));
localStorage.getItem('allContracts');

更多详细信息,请访问:https://developer.mozilla.org/en-US/docs/Web/API/Storage

相关问题