JavaScript计算两个Set交集输出[object Set]如何正确显示元素
问题原因
Set是JavaScript的内置引用类型,默认字符串转换结果为[object Set],在老旧运行环境中直接打印Set实例时就会显示该内容,无法看到内部存储的元素。你的交集计算逻辑本身没有问题,仅需要调整输出方式即可。
解决方案
你可以根据需求选择以下任意一种方式输出交集元素:
- 转数组后一次性打印
用展开运算符或者Array.from()把Set转为普通数组再打印,是最常用的方式:const setA = new Set([1, 2, 3, 4]); const setB = new Set([3, 4, 5, 6]); function intersection(setA, setB) { const result = new Set(); for (const elem of setA) { if (setB.has(elem)) { result.add(elem); } } return result; } // 方式1:展开运算符转数组 console.log([...intersection(setA, setB)]); // 输出 [3, 4] // 方式2:Array.from转数组 console.log(Array.from(intersection(setA, setB))); // 输出 [3, 4] - 遍历逐个输出元素
如果不需要数组格式,可以直接遍历Set实例逐个打印内部元素:const intersectResult = intersection(setA, setB); for (const item of intersectResult) { console.log(item); } // 依次输出: // 3 // 4 - 升级运行环境
目前新版Chrome、Firefox、Node.js 10及以上版本的控制台已经支持直接打印Set实例,会自动格式化显示内部元素,不需要额外转换。
注意:不要用字符串拼接的方式直接拼接Set实例,这种场景下会强制触发
toString()转换,必然得到[object Set]的结果。
内容的提问来源于stack exchange,提问作者Steve purpose
相关产品推荐
相关产品推荐

