localStorage.removeItem基于值

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

我正在尝试将删除帐户添加到我的应用程序中。我使用一个具有基于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]);
}

这些方法都没有实际删除该值。知道我可能会缺少什么吗?

javascript json vue.js local-storage
2个回答
2
投票

您只能使用localStorage.removeItem()删除整个localStorage条目。你要做的是删除部分localStorage条目。执行此操作的唯一方法是检索对象,像普通JS对象一样删除键,然后重新设置localStorage条目:

removeAccount(state, account){
  const accounts = JSON.parse(localStorage.getItem('accounts'));
  delete accounts[account.apikey];
  localStorage.setItem("accounts", JSON.stringify(accounts));
}

2
投票

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)
);  
© www.soinside.com 2019 - 2024. All rights reserved.