无法从数组创建新Set,返回空对象,求排查问题原因
问题:用数组创建Set后打印显示空对象?
你这段代码本身没有错误,new Set(myArray)已经成功创建了包含唯一值的Set集合。之所以Logger.log(mySet)显示空对象,是因为很多日志工具(比如Google Apps Script里的Logger)无法直接正确序列化并展示ES6的Set对象,导致输出看起来是空的。
验证Set是否创建成功的方法:
- 查看Set的元素数量:
const myArray = ["value1", "value2", "value3", "value1", "value2"]; const mySet = new Set(myArray); Logger.log(mySet.size); // 输出3,证明Set里有3个唯一元素
- 把Set转换成数组后再打印,就能看到实际内容:
const myArray = ["value1", "value2", "value3", "value1", "value2"]; const mySet = new Set(myArray); Logger.log([...mySet]); // 输出 ["value1", "value2", "value3"] // 或者用Array.from()转换 Logger.log(Array.from(mySet));
如果是在浏览器开发者控制台里直接打印mySet,是能正常看到Set的结构和内容的,只是部分特定环境的日志工具对ES6集合对象的支持有限,需要转成数组来查看。
内容的提问来源于stack exchange,提问作者Borgher
相关产品推荐
相关产品推荐

