set与map

embedded/2024/12/23 1:44:25/

1,介绍

ES6提新的数据结构。set它类似于数组,值都是唯一的,本身是一个构造函数。

map数据结构 它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类

型的值(包括对象)都可以当作键。也就是说,Object结构提供了“字符串————值”

的对应,Map结构提供了“值————值”的对应。

2.方法对比

3.自身特点

3.1 set

javascript">//向Set加入值的时候,不会发生类型转换 所以5和"5"是两个不同的值。Set内部判断两个值是否不同,使用的算法叫做“Same-value equality”,
// 它类似于精确相等运算符(===),主要的区别是NaN等于自身,而精确相等运算符认为NaN不等于自身。但是两个对象总是不相等的。
// 数组去重
// function test(array) {
//   return Array.from(new Set(array)); //Array.from方法可以将Set结构转为数组。
// }
// console.log(test([1, 1, 2, 3])) // [1, 2, 3]// 1.筛选重叠// let  setA =new Set([1,2,3,4])// let  setB =new Set([3,4,5,6])// let test=setA.intersection(setB) //与元素位置无关,只要重叠就会获取到// console.log(test);//3,4// 2.去重后组合// let  setA =new Set([1,2,3,4])// let  setB =new Set([3,4,5,6])// let test=setA.union(setB) // console.log(test);//1,2,3,4,5,6//   // 3.去除A中存在的B中的元素// let  setA =new Set([1,2,3,4])// let  setB =new Set([3,4,5,6])// let test=setA.difference(setB) // console.log(test);//1,2// 4.去除共存元素后重组// let  setA =new Set([1,2,3,4])// let  setB =new Set([3,4,5,6])// let test=setA.symmetricDifference(setB) // console.log(test);//1,2,5,6// // 5.判断A是否完全包含在B中// let  setA =new Set([3,4])// let  setB =new Set([3,4,5,6])// let test=setA.isSubsetOf(setB) // console.log(test);//true// 6.判断两个数据是否完全不一样// let  setA =new Set([3,4])// console.log(setA);    // let  setB =new Set([3,4,5,6])// let test=setA.isDisjointFrom(setB) // console.log(test);//false代表有重合 true代表完全不重合

 3.2map

javascript">// 1.设置键值时,字符串true和布尔值true是两个不同的键。// var m = new Map([// [true, 'foo'],// ['true', 'bar']// ]);
// 2.如果对同一个键多次赋值,后面的值将覆盖前面的值。
// 3.只有对同一个对象的引用,Map结构才将其视为同一个键
// var map = new Map();
// map.set(['a'], 555);
// map.get(['a']) // undefined
// 4.虽然NaN不严格相等于自身,但Map将其视为同一个键
// Map结构转为数组结构,比较快速的方法是结合使用扩展运算符(...)Map结构转为数组结构,比较快速的方法是结合使用扩展运算符(...)
// 结合数组的map方法、filter方法,可以实现Map的遍历和过滤
// Map还有一个forEach方法,与数组的forEach方法类似,也可以实现遍历。
// 可与其他数据结构的互相转换


http://www.ppmy.cn/embedded/103461.html

相关文章

C_05_编译4阶段

c语言编译的4个阶段:预处理、 编译、 汇编、 链接 预处理阶段会在源代码中查找预编译指令,其中主要是头文件展开(include),宏定义(defind),选择性编译(ifdef)三种指令 预…

【精选】基于Hadoop的社区流浪动物救助领养系统的设计与实现(全网最新定制,独一无二,免费赠送文档参考)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

【Hexo系列】【7】Butterfly主题使用及美化

本期将为大家讲解Hexo Butterfly主题的使用。 1. 主题介绍 hexo-theme-butterfly是基于 Molunerfinn 的 hexo-theme-melody 的基础上进行开发的,当前版本是v4.13.0。 主题官网:https://github.com/jerryc127/hexo-theme-butterfly 官网效果图&#x…

开放式耳机会漏音吗?开放式耳机测评

开放式耳机由于其独特的设计,允许声音在一定程度上自然地与外界环境融合。这种设计带来的一个常见误解是,人们可能会认为开放式耳机会有较大的声音泄露。然而,实际上,高质量的开放式耳机通过精心的声学设计,可以有效地…

封装CUDA为动态链接库+Qt调用

由于工作需要在Qt中调用CUDA做并行计算,加速算法实现时间,发现有两种方法可以在Qt中调用CUDA代码。 第一种是在项目中创建CUDA的cu文件,编写CUDA的核函数给其他的QT代码调用,Qt的代码正常编译,CUDA代码使用nvcc编译器编…

在 Deepin 系统中搭建 Node.js 开发环境

Node.js 是基于 Chrome V8 JavaScript 引擎的运行时环境。它使得 JavaScript 不再仅限于前端,而可以扩展到后端开发,从而在传统由 C/C、Java、Go 等语言主导的领域中占据一席之地。JavaScript 语言本身简洁易用,加上 Node.js 提供的大量模块&…

事半功倍:利用增强现实提高工作效率

人们通常认为增强现实只是游戏中的一个强大的功能,然而,研究表明,增强现实在提高工厂的效率和生产力方面也发挥着重要作用。不管增强现实、虚拟现实还是混合现实都能很好地模拟工厂的工作场景,这对于培训、运营、安全和研发方面的…

行为模式6.备忘录模式------文本的撤销和保存

行为型模式 模板方法模式(Template Method Pattern)命令模式(Command Pattern)迭代器模式(Iterator Pattern)观察者模式(Observer Pattern)中介者模式(Mediator Pattern…