chrome.storage如何从数组中删除特定项

8
这是我Chrome本地存储中存储的JSON。
{"users":[
    {"password":"123","userName":"alex"},
    {"password":"234","userName":"dena"},
    {"password":"343","userName":"jovit"}
]}

如何在“用户”中删除特定的项目?我尝试了以下代码但没成功。

chrome.storage.local.remove('users[0]', function(){
    alert('Item deleted!');
});

这个方法 StorageArea.remove(string or array of string keys, function callback) 是否与你们的方法相同? - doniyor
https://dev59.com/aXXYa4cB1Zd3GeqP1ggV - Lakshay Dulani
@doniyor 我不确定,但我认为这就是它。这里是我正在使用的文档链接[link]https://developer.chrome.com/apps/storage - Alex Coroza
@AlexCoroza 是的,那么它就是相同的。 - doniyor
根据文档,我只能删除整个“users”。但是我想删除“users”中的某些项。 - Alex Coroza
显示剩余5条评论
2个回答

7

chrome.storage中,没有魔法语法可以仅删除数组中的一个元素。为了从数组中删除一个项目,您必须检索存储的数组,丢弃不需要的项目(或等效地,仅保留要保留的项目),然后再次保存该数组:

chrome.storage.local.get({users: []}, function(items) {
    // Remove one item at index 0
    items.users.splice(0, 1);
    chrome.storage.set(items, function() {
        alert('Item deleted!');
    });
});

请参考https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
注意,如果您想删除一个或多个值满足特定条件的项,则必须反向遍历数组。否则,当您删除第一项后,后面元素的索引会向前偏移1,删除两项时向前偏移2,以此类推,可能会导致删除错误的项。请谨慎操作。

啊,我明白了。我以为有一个内置函数可以做到这一点。好的,我会使用这个解决方案。 - Alex Coroza
@AlexCoroza 之所以没有这样的函数,是因为尽管自动接受和返回与 JSON 兼容的值,但 chrome.storage 对它们进行了序列化,因此它的数据库由没有 "子项" 的字符串组成。 - Xan

3

是的,你可以尝试这个。

chrome.storage.sync.remove("token");

查看文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接