如何使用chrome.storage.sync.remove从数组中删除一个项目?

时间:2018-04-11 20:58:31

标签: javascript arrays google-chrome-extension google-chrome-storage

我正在制作Chrome浏览器扩展程序,其中包含一项功能,可让用户保存网址。我使用git checkout ./* 创建此功能,但没有遇到任何问题。

但是,我还需要让用户删除他们已保存的网址。我创建了一个文本输入框,他们可以输入他们想要删除的单个网址(即“www.url.com”)。我想将此输入转换为字符串,并在用户按下按钮时使用它从Chrome存储中删除匹配的字符串。

我认为chrome.storage documentation指定可以使用chrome.storage.sync从存储的数组中删除字符串,但我无法使其工作。这是我的代码:

chrome.storage.sync.remove

此代码不会抛出任何错误,但它也不会从数组中删除url。

请注意,我一次只想删除1个url,数组中没有重复的url,我没有使用像jQuery这样的库。我究竟做错了什么?

1 个答案:

答案 0 :(得分:1)

你不能这样做,因为chrome.storage是一个键值存储。

在您的特定示例中,您尝试从存储中删除阵列中的一个元素,但存储仅包含带有数组的键。

此处的最佳解决方案是从数组中删除此值并再次将数组设置为chrome.storage

var theList = result['urlList'];

// Checks if the url that will be deleted is in the array:
if (theList.includes(theUrl)) {

  // create a new array without url
  var newUrlList = arr.filter(function(item) { 
    return item !== theUrl;
  });

  // set new url list to the storage
  chrome.storage.sync.set({ 'urlList': newUrlList });
  chrome.runtime.reload();
}