这是一个网站游戏。 我正在将 JSON 的功能与 localStorage 结合使用。 有时我需要根据其值从 JSON 字符串中删除项目。 由于某种原因,当我这样做时,额外的退格符会添加到字符串中,这会破坏我的函数的其余部分。 如何缓解这种情况?
这就是我所拥有的。 我尝试过在不同的配置中删除最后的 JSON.parse 和 JSON.stringify 但输出似乎总是有额外的反斜杠,根据 JSON.parse 和 JSON.stringify 的配置,还有更多的反斜杠。
const starterInv = ["Helmet", "Healing_Kit", "Rope"];
localStorage.setItem("Inventory", JSON.stringify(starterInv));
let inventory = localStorage.getItem("Inventory");
let inventoryString = JSON.stringify(inventory);
const helmetString = /Helmet/g;
const matchHelmet = inventoryString.match(helmetString);
let numHelmet = matchHelmet.length;
// if there is more than one helmet
if(numHelmet > 1) {
removeItem = "\"Helmet\"\,";
// if there is only one helmet
}else if (numHelmet == 1) {
//tests to see if Helmet is in first position in the string
let isBegin = inventoryString.indexOf("Helmet");
//if Helmet is not in first available position remove leading comma
if(isBegin > 4) {
removeItem = "\,\"Helmet\"";
//if there are other items in list remove trailing comma
}else if (inventoryString.length > 14) {
removeItem = "\"Helmet\"\,";
// only thing left should be scenario where Helmet is only item in string
}else {
removeItem = "\"Helmet\"";
}
}
inventory = JSON.parse(inventoryString.replace(removeItem, ""));
localStorage.setItem("Inventory", JSON.stringify(inventory));
问题与使用解析和字符串化有关。 从 localStorage 中提取时,该项目已经是字符串形式。 解析和字符串化只是复杂的事情。