在2024年2月左右 set 相关的 api,在 tc39 的提案中标记还比标记为 stage 3, 但是近期已经标记为 stage 4了 1。大约是 chrome 122 版本以后(截止到2024年07月04日 chrome 的版本号为 126),我们已经可以正式的用上全新的集合操作 api 了,相对应的 lodash 中的那些操作符也可以归入历史的垃圾桶了(差不多2年后)。
目前来讲已经实现的 api 有下面几个, 都很好懂,并且完全符合数学定义,我觉得有学过基本数学知识的同学都可以很简单的理解,就不多赘述,直接贴链接了:
方法 | 返回类型 | 数学定义 | 示例图片 |
---|---|---|---|
A.difference(B) | Set | ||
A.intersection(B) | Set | ||
A.symmetricDifference(B) | Set | ||
A.union(B) | Set | ||
A.isDisjointFrom(B) | Boolean | ||
A.isSubsetOf(B) | Boolean | ||
A.isSupersetOf(B) | Boolean |
注意
为了方便使用,实际上对于上述 api ,所接受的类型都是 set-like 类型的对象
下面是一个简单的 polyfill 实现 ,你可以通过 core-js 提供支持 2
性能
至于性能方面,这块代码虽然是 native 的但是实际上是用TurboFan写的 js代码,速度会不会快?那肯定要比 js 实现快, 具体快多少不好说,最少会快 2x,等过段时间做个 benchmark 试一下。
脚注
本文标题:js 中的新集合操作 API
永久链接:https://iceprosurface.com/code/js-new-set-operations-api/
作者授权:本文由 icepro 原创编译并授权刊载发布。
版权声明:本文使用「署名-非商业性使用-相同方式共享 4.0 国际」创作共享协议,转载或使用请遵守署名协议。