JSON 字符串获得额外\添加

问题描述 投票:0回答:1

这是一个网站游戏。 我正在将 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));
javascript json local-storage
1个回答
0
投票

问题与使用解析和字符串化有关。 从 localStorage 中提取时,该项目已经是字符串形式。 解析和字符串化只是复杂的事情。

© www.soinside.com 2019 - 2024. All rights reserved.