首页 > 编程语言 >学习JavaScript数据结构与算法 第七章

学习JavaScript数据结构与算法 第七章

时间:2023-05-09 20:57:43浏览次数:46  
标签:Set setA setB JavaScript value add set 第七章 数据结构

7. 集合

7.4 ESMAScript 2015 --- Set 类

ECMAScript 2015 新增了 Set 类作为 JavaScript API 的一部分。我们可以基于 ES2015 的 Set 开发我们的 Set 类。

const set = new Set()

set.add(1)
console.log(set.values())  // @iterator

console.log(set.has(1))
console.log(set.size)

set.add(2)

set.delete(2)

set.clear()
console.log(set)

ES2015 Set 类的运算

我们的 Set 类实现了并集、交集、差集、子集等数学运算,然而 ES2015 原生的 Set 并没有这些功能。

const setA = new Set();
setA.add(1);
setA.add(2);
setA.add(3);

const setB = new Set();
setB.add(2);
setB.add(3);
setB.add(4);


// 1. 模拟并集运算
function union(setA, setB) {
  const unionAb = new Set()

  setA.forEach(value => unionAb.add(value))
  setB.forEach(value => unionAb.add(value))

  return unionAb
}

// 2. 模拟交集运算
function intersection(setA, setB) {
  const intersectionSet = new Set()

  setA.forEach(value => {
    if (setB.has(value)) {
      intersectionSet.add(value)
    }
  })
  return intersectionSet
}

// 3. 模拟差集运算
function difference(setA, setB) {
  const differenceSet = new Set()

  setA.forEach(value => {
    if (!setB.has(value)) {
      differenceSet.add(value)
    }
  })
  return differenceSet
};
console.log(difference(setA, setB))


// 使用扩展运算符

new Set([...setA, ...setB])

new Set([...setA].filter(x => setB.has(x)))

new Set([...setA].filter(x => !setB.has(x)))


7.5 多重集或袋

标签:Set,setA,setB,JavaScript,value,add,set,第七章,数据结构
From: https://www.cnblogs.com/sanhuai/p/17386239.html

相关文章

  • 数据结构(python版)—— 1、前期知识和综述
    前言为了提高代码质量和后续处理需求的能力,有必要再复习下算法和数据结构,为后续ESP32项目和数据处理打下坚实基础。故根据所学整理此系列文章。文章分为:1、概述:计算理论2、算法分析3、基本结构(线性表、链表、栈和队列)4、递归(递归算法和分治策略)5、排序与查找6、树及其算法......
  • 常见算法和数据结构存在的坑(updating)
    数组:c++数组下标都+5会稳。\(5000*5000\)的别开\(6000*6000\)。二分:实数二分可能因为神马精度问题出现了不满足二分序的情况,要小心。注意二分完后,不能直接用当前数组里存的值,要pd(ans),值才是正确的。边集数组:无向图边的范围要开2倍。多组数据要清空的有tot,final当用到反向边的时候......
  • javascript函数声明和函数表达式
    JavaScript中定义函数最常用的方式是函数声明和函数表达式。这两种技术非常相似,有时甚至难以区分,但在后续章节中可以看到,它们之间还是存在着微妙的区别。JavaScript定义函数最基本方式是函数声明,如下图:正如你所见,每个函数声明以强制性的function开头,其后紧接着强制性的函数名,以及......
  • JavaScript 正则表达式
    正则表达式RegularExpression在编程语言中,正则表达式用于匹配指定的字符串。如果想要在字符串Thedogchasedthecat中匹配到the这个单词,可以使用如下正则表达式:/the/。注意,正则表达式中不需要引号。使用测试方法TestMethodJavaScript中有多种使用正则表达式的方法......
  • 数据结构实训_银行管理系统
    记录下自己寒假写的千行代码,虽然千行,但是质量不高,但是好歹自己写的,记录下嘿嘿#include<bits/stdc++.h>usingnamespacestd;constintINF=0x3f3f3f3f;//----------------------------------------顾客信息-----------------------------------------structnode{in......
  • 学习JavaScript数据结构与算法 第五章
    五,队列和双端队列我们已经学习了栈。队列和栈非常类似,但是使用了与后进先出不同的原则。双端队列是一种将栈的原则和队列的原则混合在一起的数据结构。5.1队列数据结构队列是遵循先进先出(FIFO,也称为先来先服务)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最......
  • JavaScript
    JavaScript概述ECMAScript和JavaScript的关系1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就......
  • Javascript异步编程的4种方法
    你可能知道,Javascript语言的执行环境是"单线程"(singlethread)。所谓"单线程",就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须......
  • JavaScript: XMLHTTPRequest
     XMLHttpRequest(javascript.info)<body><script>//CreateanewXMLHTTPRequestobjectletxhr=newXMLHttpRequest()xhr.timeout=5000//timeoutinmsleturl=newURL('https://cursive.winch.io/......
  • C/C++数据结构练习题[2023-05-08]
    C/C++数据结构练习题[2023-05-08]基本习题部分1字符串距离目的:字符串是一种基础且广泛使用的数据结构,与字符串相关的题目既可以考察基本程序设计能力和技巧,也可以考查算法设计能力。题目:求字符串之间距离要求:设有字符串X,称在X的头尾及中间插入任意多个空格后构成的新字......