如何在chrome本地存储中存储Set对象

mik*_*mik 5 javascript google-chrome local-storage google-chrome-extension

var testSet = new Set(); testSet.add(1); testSet.add(2);
chrome.storage.local.set( { 'key': testSet }, function() { chrome.storage.local.get( 'key', function(data){ console.log(data) }); });
Run Code Online (Sandbox Code Playgroud)

这输出

Object {key: Object}
key: Object__proto__: 
Object__proto__: Object
Run Code Online (Sandbox Code Playgroud)

为什么它不显示其中的 testSet 值?

vad*_*lim 6

实现此目的的一种方法是使用Spread OperatorSet将您的数据转换为数组。

例如

var testSet = new Set(); testSet.add(1); testSet.add(2);
chrome.storage.local.set({ 'key': [...testSet] });
Run Code Online (Sandbox Code Playgroud)

当你想检索它时,你可以这样做......

chrome.storage.local.get('key', function(data){ 
    var mySet = new Set(data.key);
    console.log(mySet);
})
Run Code Online (Sandbox Code Playgroud)

编辑:感谢 Xan 的评论,注意到chrome.storage可以直接设置数组。