gpt4 book ai didi

javascript - 用 JSON 覆盖 localStorage

转载 作者:行者123 更新时间:2023-11-30 17:43:27 26 4
gpt4 key购买 nike

这是 this 的后续问题

我开始使用 localStorage 函数,并且不确定它是否按预期工作。

我想覆盖我的 JSON 文件中的 bool 值。

Player在一个stage中点击exit,然后触发下一个stage的load,但我也希望它能保存阶段已完成的事实。

这是我的 JSON 数组,默​​认情况下定义所有地牢都是不完整的:

var dungeon_prog = {
"dungeon0_prog" : {
"complete" : true
},
"dungeon1_prog" : {
"complete" : false
},
"dungeon2_prog" : {
"complete" : false
}
};

然后我将它设置为本地存储:

localStorage.setItem('dungeon_prog', JSON.stringify(dungeon_prog));
var dungeon_prog_obj = JSON.parse(localStorage.dungeon_prog);

我希望它在玩家到达地牢 1 的导出时将 dungeon1_prog "complete"false 覆盖为 true

我该怎么做?默认的“假”语句是否实际保存在 localStorage 中?谢谢。

最佳答案

dungeon_prog_obj 现在包含您的 JSON 对象。要回答您的最后一个问题,是的 - localStorage 保存了整个 JSON 字符串,因此它也保存了 bool 值。

要覆盖它,您只需设置 bool 值并将它们再次保存到同一个 localStorage 项目:

dungeon_prog_obj.dungeon1_prog.complete = true;
localStorage.setItem('dungeon_prog', JSON.stringify(dungeon_prog_obj));

编辑:

根据要求更新以回答评论中的问题。

我不是 100% 确定这是问题所在,但您是说在页面刷新时 true 值不会持续存在。唯一合理的解释是,在每次加载页面时,您都使用 localStorage.setItem('dungeon_prog', JSON.stringify(dungeon_prog)); 将 JSON 覆盖为初始页面,其中 dungeon_prog 是您问题中指定的初始 JSON。

如果您在 localStorage 中有该项目,您应该检查负载而不是这样做。您可以通过以下方式执行此操作:

// Check for object in localStorage
var dungeon_prog = JSON.parse(localStorage.dungeon_prog);

// If it does not exist, initialize it and save it
if (dungeon_prog != null) {
dungeonProg = {
"dungeon0_prog" : {
"complete" : true
},
"dungeon1_prog" : {
"complete" : false
},
"dungeon2_prog" : {
"complete" : false
}
};

localStorage.setItem('dungeon_prog', JSON.stringify(dungeon_prog));
}

关于javascript - 用 JSON 覆盖 localStorage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20607817/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com