代码之家  ›  专栏  ›  技术社区  ›  A.J

localStorage.removeItem文件基于价值

  •  0
  • A.J  · 技术社区  · 6 年前

    我正在尝试将帐户删除添加到我的应用程序中。我使用一个键和基于API的多个值来存储帐户。

    我是这样添加帐户的:

    addAccount(state,account){
        state.accounts[account.apikey] = account;
        localStorage.setItem(
            "accounts",
            JSON.stringify(state.accounts)
        );  
    },
    

    这就是我的 localStorage 看起来像:

    key: accounts
    {  
       "API Key 1":{ a bunch of info },
       "Api Key 2":{ a bunch of info }
    }
    

    我尝试删除基于API密钥的帐户:

    removeAccount(state,account){
        localStorage.removeItem(account.apikey);
        localStorage.removeItem(JSON.stringify(state.accounts));
        localStorage.removeItem(state);
        localStorage.removeItem(account);
        localStorage.removeItem(state.accounts[account.apikey]);
    }
    

    2 回复  |  直到 6 年前
        1
  •  2
  •   izb    6 年前

    localStorage.removeItem() 删除整个 localStorage 条目。你要做的是移除 零件 本地存储 进入。唯一的方法是检索对象,像删除普通JS对象一样删除键,然后重新设置 条目:

    removeAccount(state, account){
      const accounts = JSON.parse(localStorage.getItem('accounts'));
      delete accounts[account.apikey];
      localStorage.setItem("accounts", JSON.stringify(accounts));
    }
    
        2
  •  2
  •   Abid Hasan    6 年前

    localStorage中的数据作为字符串保存。因此,您需要读取整个字符串,删除该项,然后将其写回:

    let oldLocalStorage = JSON.parse(localStorage['accounts']);
    // Do something to oldLocalStorage, which is the JS object
    
    // Write back to local storage
    localStorage.setItem(
            "accounts",
            JSON.stringify(oldLocalStorage)
    );