提问者:小点点

ES6设置不工作在一个简单的快递Node.js应用程序[重复]


我有一个使用Express和Node的简单应用程序(在windows上为v12.13.0)。我发现我无法向Set添加任何内容。

我厌倦了在其中添加不同类型的对象,但根本不起作用。Object.prototype.toString.call(aSet)输出[object Set]:

let users = new Set();
users.add('1');
console.log('users: ' + JSON.stringify(users));

上面的输出<code>{}</code>,一个空对象,尽管Set中有项。


共1个答案

匿名用户

集合不是普通对象-它们是Set实例,因此(就像其他不是普通对象的对象,如日期、正则表达式、函数等)它们不能转换为JSON或返回。如果要序列化它们,请先将它们转换为数组(要反序列化,请获取数组并传递给new Set):

let users = new Set();
users.add('1');
const arrUsersJSON = JSON.stringify([...users]);
console.log('users: ' + arrUsersJSON);

// Deserialize:
const deserializedArr = JSON.parse(arrUsersJSON);
const deserializedSet = new Set(deserializedArr);
console.log(deserializedSet.has('1'));