JavaScript Set 全新方法
Mozilla开发者博客宣布,JavaScript Set迎来了一系列新方法,这些方法已经在大多数主流浏览器引擎(从Firefox 127开始)中得到支持。这意味着开发者无需使用polyfill就能在各种浏览器上使用这些新方法。
新方法包括:
intersection(): 返回一个新集合,其中包含当前集合和给定集合的交集元素。union(): 返回一个新集合,其中包含当前集合和给定集合的所有元素。difference(): 返回一个新集合,其中包含当前集合中存在但给定集合中不存在的元素。symmetricDifference(): 返回一个新集合,其中包含存在于当前集合或给定集合中,但不同时存在于两个集合中的元素。isSubsetOf(): 返回一个布尔值,指示当前集合的所有元素是否都存在于给定集合中。isSupersetOf(): 返回一个布尔值,指示给定集合的所有元素是否都存在于当前集合中。isDisjointFrom(): 返回一个布尔值,指示当前集合和给定集合是否没有共同元素。
JavaScript Set简介
Set类似于数组,但每个值只能存储一次,确保了集合中元素的唯一性。与数组相比,检查元素是否存在于Set中通常更快,这在需要关注大型数据集性能的用例中非常适用。 此外,开发者还可以根据现有集合创建具有特定逻辑属性的新集合。
const dogs = new Set();
const yoshi = { name: "Yoshi", personality: "Friendly" };
dogs.add(yoshi);
新方法应用示例
union()方法: 用于创建包含两个集合所有元素的新集合,并去除了重复元素。
// Create a union of both sets
const unionSet = set1.union(set2);
// List the items in the union
unionSet.forEach((item) => {
const li = document.createElement("li");
li.textContent = item;
unionList.appendChild(li);
});
intersection()方法: 用于查找两个集合的交集元素。
// Make the intersection set
const intersectionSet = set1.intersection(set2);
// Loop through lists and highlight if they're in the intersection
allListItems.forEach((item) => {
if (intersectionSet.has(item.textContent)) {
item.className = "match";
}
});
symmetricDifference()方法: 用于查找存在于两个集合中的任何一个集合中,但不同时存在于两个集合中的元素。
const setNotBoth = set1.symmetricDifference(set2);
allListItems.forEach((item) => {
if (setNotBoth.has(item.textContent)) {
item.className = "match";
}
});
difference()方法: 用于查找存在于一个集合中但不存在于另一个集合中的元素。
const set1only = set1.difference(set2);
const set2only = set2.difference(set1);
allListItems.forEach((item) => {
if (set1only.has(item.textContent)) {
item.className = "setOneMatch";
} else if (set2only.has(item.textContent)) {
item.className = "setTwoMatch";
}
});
isSubsetOf()、isSupersetOf()和isDisjointFrom()方法: 用于检查集合之间的包含关系和不相交关系。
if (set1.isSubsetOf(set2)) {
oneSubTwo.textContent += " [TRUE]";
} else {
oneSubTwo.textContent += " [FALSE]";
}
详情查看:https://developer.mozilla.org/en-US/blog/javascript-set-methods/
关注公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
字节跳动回应与博通合作开发 AI 芯片:消息不实
有消息称字节跳动为削减采购成本并确保高端 AI 芯片供应稳定,与美国博通(Broadcom)合作开发先进AI处理器。针对该消息,字节跳动方面对第一财经记者回应称:消息不实。 据媒体报道,字节跳动与博通合作开发的处理器为5nm ASIC(专用集成电路),ASIC是一种面向特定应用场景的专用芯片,通过算法固化实现性能和能效最大化,平均性能强、功耗低、性价比高,但前期投入大且研发时间较长,且不具备通用性。预计该处理器将符合美国出口管制新规,制造工作部分将外包给台积电 。 消息人士称,虽然目前芯片设计工作正顺利进行中,但仍未进入“流片”(试生产)阶段,预计台积电方面今年不会生产这款芯片。截至发稿,台积电方面暂未发表回应。此前,字节跳动已购买博通的Tomahawk 5nm芯片和Bailly交换机,用于AI计算机集群。 字节跳动近些年持续投入芯片领域,字节跳动旗下火山引擎总裁谭待此前在接受媒体采访时表示,算力在当下行业情况下,是一个异构算力系统,每个团队有不同的芯片选择,不同的芯片有不同的擅长领域。有的内存大,有的算力强,有的兼容性好。而对平台方来讲,规模优势始终存在,不论未来是否会出现更多底层供...
-
下一篇
openKylin 西安用户组成立,多地用户组持续招募中!
6月22日,由openKylin社区主办、西安邮电大学计算机学院协办的2024年度openKylin Meetup第六期线下沙龙,在西安邮电大学东区逸夫教学楼圆满举行。此次活动汇聚了西安地区的openKylin用户及西邮Linux兴趣小组众多成员相聚,围绕开源操作系统的创新发展、openKylin最新发布版本的使用体验、openKylin在RISC-V领域的布局等话题进行了交流研讨。 成立仪式 活动现场,西邮Linux兴趣小组指导老师王小银及多位小组成员加入openKylin西安用户组,众多开源技术爱好者共同见证了openKylin西安用户组的成立,这标志着openKylin在西安地区的发展迈出了坚实一步。用户组的成立将为西安地区的用户提供一个交流、学习和合作的平台,促进openKylin操作系统在本地的应用和推广。 主题分享 1.《openKylin社区成果进展及城市用户组介绍》 openKylin Community SIG Maintainer范娇,就Linux和开源软件生态、openKylin社区治理体系及阶段成果、开发者参与社区实践的收获成长、openKylin城市用户组...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL数据库中FOR UPDATE的使用
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- MySQL数据库在高并发下的优化方案
- CentOS关闭SELinux安全模块
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- MySQL8.0.19开启GTID主从同步CentOS8








微信收款码
支付宝收款码