Set 是 ES6 中新增的一种集合数据类型,它可以存储任何类型的唯一值,且无序不可重复。在 ES9 中,Set 集合的功能得到了进一步的增强,今天我们就来详细了解一下在 ES9 中如何使用 Set 集合。
一、Set 常用方法
在 ES9 中,Set 实例新增了如下五个方法。
1. Set.prototype.union(set)
将当前 Set 实例与另一个 Set 实例合并,返回一个新的 Set 实例。
const setA = new Set([1, 2, 3]); const setB = new Set([4, 5, 6]); const setC = setA.union(setB); console.log(setC); // Set {1, 2, 3, 4, 5, 6}
2. Set.prototype.intersection(set)
获取当前 Set 实例和另一个 Set 实例的交集,返回一个新的 Set 实例。
const setA = new Set([1, 2, 3]); const setB = new Set([2, 3, 4]); const setC = setA.intersection(setB); console.log(setC); // Set {2, 3}
3. Set.prototype.difference(set)
获取当前 Set 实例除了与另一个 Set 实例重复的值之外的所有值,返回一个新的 Set 实例。
const setA = new Set([1, 2, 3, 4, 5]); const setB = new Set([4, 5, 6]); const setC = setA.difference(setB); console.log(setC); // Set {1, 2, 3}
4. Set.prototype.isSuperset(set)
判断当前 Set 实例是否是另一个 Set 实例的父集,返回一个布尔值。
const setA = new Set([1, 2, 3, 4, 5]); const setB = new Set([2, 4, 5]); const setC = new Set([2, 4]); console.log(setA.isSuperset(setB)); // true console.log(setA.isSuperset(setC)); // false
5. Set.prototype.isSubset(set)
判断当前 Set 实例是否是另一个 Set 实例的子集,返回一个布尔值。
const setA = new Set([2, 4, 5]); const setB = new Set([1, 2, 3, 4, 5]); const setC = new Set([2, 4]); console.log(setA.isSubset(setB)); // true console.log(setA.isSubset(setC)); // false
二、Set 的扩展运算符
在 ES6 中,Set 实例没有提供扩展运算符,需要通过 Array.from()
或者 Array.prototype.concat()
将 Set 转换成数组才能使用扩展运算符。但是在 ES9 中,Set 实例新增了扩展运算符,可以直接使用。
const setA = new Set([1, 2, 3]); const setB = new Set([3, 4, 5]); const setC = new Set([...setA, ...setB]); console.log(setC); // Set {1, 2, 3, 4, 5}
三、Set 中的值类型不一致
在 ES9 中,一个 Set 实例中可以存储不同类型的值。
const set = new Set([1, '2', { name: 'Bob' }]); console.log(set); // Set {1, '2', { name: 'Bob' }}
需要注意的是,虽然 Set 中可以放不同类型的值,但是比较的时候还是按照值的类型进行比较。例如 1
和 '1'
虽然值相同,但是类型不同,所以在 Set 中被视为两个不同的值。
四、Set 中的 NaN 和 undefined
在 ES9 中,Set 实例中可以存储 NaN 和 undefined。
const set = new Set([NaN, undefined]); console.log(set.has(NaN)); // true console.log(set.has(undefined)); // true
需要注意的是,Set 内部的 NaN 被视为等于 NaN,undefined 被视为等于 undefined。
五、总结
在 ES9 中,Set 集合的功能得到了进一步的增强,新增了常用方法,并且提供了扩展运算符。在使用 Set 的时候需要注意,Set 的值类型不一致,而且内部的 NaN 和 undefined 需要特别处理。掌握 Set 的用法对于我们编写高效、优雅的代码非常有帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65375dab7d4982a6ebfda777