Javascript Set 2024新增方法

更新于 阅读 17

记录2024年Set新增的方法,目前主流浏览器的最新版本均支持这些方法,可通过caniuse查看。

difference

返回包含此集合的元素但不包含给定集合元素的新集合。

const odds = new Set([1, 3, 5, 7, 9]); const squares = new Set([1, 4, 9]); console.log(odds.difference(squares)); // Set(3) { 3, 5, 7 }

intersection

返回同时包含在此集合和给定集合中的元素的新集合。

const odds = new Set([1, 3, 5, 7, 9]); const squares = new Set([1, 4, 9]); console.log(odds.intersection(squares)); // Set(2) { 1, 9 }

isDisjointFrom

检测集合与给定集合存在不相同的元素,不存在返回true

const primes = new Set([2, 3, 5, 7, 11, 13, 17, 19]); const squares = new Set([1, 4, 9, 16]); console.log(primes.isDisjointFrom(squares)); // true

isSubsetOf

检测集合是否为给定集合的子集,是返回true

const fours = new Set([4, 8, 12, 16]); const evens = new Set([2, 4, 6, 8, 10, 12, 14, 16, 18]); console.log(fours.isSubsetOf(evens)); // true

isSupersetOf

检测集合是否包含给定集合的所有元素,是返回true

const evens = new Set([2, 4, 6, 8, 10, 12, 14, 16, 18]); const fours = new Set([4, 8, 12, 16]); console.log(evens.isSupersetOf(fours)); // true

下面不完全包含,返回了false

const primes = new Set([2, 3, 5, 7, 11, 13, 17, 19]); const odds = new Set([3, 5, 7, 9, 11, 13, 15, 17, 19]); console.log(odds.isSupersetOf(primes)); // false

union

返回一个包含集合和给定集合元素的新集合。

const evens = new Set([2, 4, 6, 8]); const squares = new Set([1, 4, 9]); console.log(evens.union(squares)); // Set(6) { 2, 4, 6, 8, 1, 9 }

symmetricDifference

返回一个包含集合和给定集合元素的新集合,但不包含两个集合中相同的元素。

const evens = new Set([2, 4, 6, 8]); const squares = new Set([1, 4, 9]); console.log(evens.symmetricDifference(squares)); // Set(5) { 2, 6, 8, 1, 9 }

PS:这些新增方法一定程度减少编程时业务代码的复杂度,但如果要支持低版本浏览器,还是使用常见的工具库比较保险。