当前位置: 首页 > news >正文

又双叒叕JavaScript 新增了 7 个方法!

JavaScript Set 对象的操作方法现已成为基线标准的一部分,这标志着这些方法在所有主流浏览器中都获得了支持。这一里程碑式的进展意味着,开发者现在可以使用 JavaScript 中的 Set 方法轻松执行诸如交集(intersection)、并集(union)等集合操作。

此网络特性已在三大浏览器引擎中全面可用,并自 2024 年 6 月 11 日起正式成为基线标准的新增功能。

支持的浏览器版本包括:Chrome(122)、Edge(122)、Firefox(127)以及 Safari(127)。

那么,什么是 JavaScript 集合呢?

集合与数组相似,但每个值在集合中只能存储一次,确保了值的唯一性。例如,你可以将一组项目列表添加到集合中,然后方便地检查和处理集合中的结果。

集合是任何编程语言中都不可或缺的数据结构。如今,借助 JavaScript 的内置方法,你可以更加便捷地执行各种集合操作。

1. Intersection()

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 }

在此示例中,odds 集合与 squares 集合的交集是两个集合中共有的元素 1 和 9,因此 intersection() 方法返回了一个包含这两个元素的新集合。

2.union()

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 }

在此示例中,evens 集合与 squares 集合的并集是两个集合中所有的元素 2, 4, 6, 8, 1, 9,因此 union() 方法返回了一个包含这些元素的新集合。

3.difference()

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 }

 

在此示例中,odds 集合与 squares 集合的差集是 odds 集合中除去 squares 集合元素后剩余的元素 3, 5, 7,因此 difference() 方法返回了一个包含这些元素的新集合。

 

4.symmetricDifference()

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 }

在此示例中,evens 集合与 squares 集合的对称差集是包含在这两个集合中但不同时存在于它们之中的元素 2, 6, 8, 1, 9,因此 symmetricDifference() 方法返回了一个包含这些元素的新集合。

5.isSubsetOf()

isSubsetOf() 方法返回一个布尔值,用于指示此集合中的所有元素是否都包含在给定的集合中。例如:

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

在此示例中,fours 集合中的所有元素 4, 8, 12, 16 都存在于 evens 集合中,因此 isSubsetOf() 方法返回了 true。

6.isSupersetOf()

isSupersetOf() 方法返回一个布尔值,用于指示给定集合中的所有元素是否都包含在此集合中。例如:

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

在此示例中,fours 集合中的所有元素 4, 8, 12, 16 都存在于 evens 集合中,因此 isSupersetOf() 方法返回了 true,表明 evens 集合是 fours 集合的超集。

7.isDisjointFrom()

isDisjointFrom() 方法返回一个布尔值,用于指示此集合与给定集合是否没有公共元素,即它们是否是互不重叠的。例如:

 

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

 

在此示例中,primes 集合与 squares 集合没有公共元素,因此 isDisjointFrom() 方法返回了 true,表明这两个集合是互不重叠的。

Set 方法的普及显著提升了代码的可读性与性能。通过内置的 intersection()、union()、difference() 和 symmetricDifference() 等方法,开发者得以摒弃繁琐的自定义逻辑,采用直观易懂的代码实现集合操作,同时充分利用了浏览器优化,提升了性能。此外,这些方法的标准化确保了跨浏览器的一致性,简化了开发流程,并降低了技术债务,使代码更易于维护和扩展。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 无人机技术的最新进展及未来趋势
  • 智能指针,然并卵
  • 精致潮人们,抠搜在电商平台
  • 前端常见**MS题 [3]
  • Android常见控件(一)
  • 怎么把JPG转成PDF?这3种转换方法一定不要错过
  • 单片机大小端模式
  • (六)Flink 窗口计算
  • react antd from表单全选按钮Button触发CheckBox状态回显
  • gin快速入门
  • Ps:高速缓存机制
  • 全面解读AI大模型:一文带你看懂发展脉络与未来走向!
  • 0成本学习Liunx系统【只需要一台笔记本电脑,无需购买云服务器】
  • 痛哭,原来我一直在用前公司的git账号提交自己的github仓库
  • 对局域网电脑远程唤醒
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • [case10]使用RSQL实现端到端的动态查询
  • Android交互
  • Angular 4.x 动态创建组件
  • CentOS7简单部署NFS
  • CentOS从零开始部署Nodejs项目
  • HashMap ConcurrentHashMap
  • interface和setter,getter
  • JSDuck 与 AngularJS 融合技巧
  • js学习笔记
  • PHP 小技巧
  • REST架构的思考
  • supervisor 永不挂掉的进程 安装以及使用
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • ubuntu 下nginx安装 并支持https协议
  • Web设计流程优化:网页效果图设计新思路
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 时间复杂度与空间复杂度分析
  • 一份游戏开发学习路线
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (1)STL算法之遍历容器
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (C语言)字符分类函数
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (ibm)Java 语言的 XPath API
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (笔记)M1使用hombrew安装qemu
  • (补充)IDEA项目结构
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (每日一问)计算机网络:浏览器输入一个地址到跳出网页这个过程中发生了哪些事情?(废话少说版)
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (十)Flink Table API 和 SQL 基本概念
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (四)Linux Shell编程——输入输出重定向
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .net mvc 获取url中controller和action
  • .net 程序发生了一个不可捕获的异常
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题