我有以下代码创建Node.NIL
Set
现在我将其存储到var foo = new Set();
foo.add(1);
foo.add(2);
:
localStorage
但是,如果我尝试像这样检索它:
localStorage.setItem("set",foo);
我得到了一个" [对象集]"结果。任何想法我如何检索实际集?
答案 0 :(得分:1)
要存储Set
,您首先需要使用JSON.stringify
,这实际上可以在对象上使用,但要在Set
上使用它,您必须先将其转换为数组。
这是因为存储在集合中的数据不会存储为属性。
var foo = new Set();
foo.add(1);
foo.add(2);
// [...foo] is be used as spread operator to convert to array
localStorage.setItem("set",JSON.stringify([...foo]));
var x = localStorage.getItem('set');
console.log('x: ', JSON.parse(x)); // will log [1,2]
答案 1 :(得分:0)
为此,首先应将一个集转换为数组。
可以使用ES6迭代来完成:
const fooArr = [...foo];
或者,如果代码应该被转换为ES5,那么最好应该是Array.from
,因为它很容易被多元化。然后它可以被字符串化并存储:
const fooArr = Array.from(foo);
localStorage.setItem('set', JSON.stringify(fooArr));
反过来检索:
const fooArr = JSON.parse(localStorage.getItem('set'));
const foo = new Set(...fooArr);