简体   繁体   中英

How to store Set object in chrome local storage

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) }); });

This outputs

Object {key: Object}
key: Object__proto__: 
Object__proto__: Object

Why doesn't it show the testSet values in there?

One way to achieve this, is by converting your Set into an array by using Spread Operator .

Eg

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

And when you want to retrieve it, you can do it like..

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

Edit: Thanks for Xan's comment to notice that chrome.storage could set an array directly.

From the chrome API docs:

StorageArea.get(string or array of string or object keys, function callback)

So it looks like you can only use primitives and objects containing primitives.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM