es6的set和map的区别是什么

区别:1、set指的是“集合”结构,而Map指的是“字典”结构;2、set是以“[value, value]”的形式储存元素,而Map是以“[key, value]”的形式储存;3、Map可用get()通过键查找特定值并返回,而set不行。

es6的set和map的区别是什么

本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。

简述:

Set 和 Map 主要的应用场景在于 数据重组 和 数据储存。Set 是一种叫做集合的数据结构,Map 是一种叫做字典的数据结构。

集合 与 字典 的区别:

共同点:集合、字典 可以储存不重复的值不同点:集合 是以 [value, value]的形式储存元素,字典 是以 [key, value] 的形式储存

集合(Set)

ES6 新增的一种新的数据结构,类似于数组,但成员是唯一且无序的,没有重复的值。

Set 本身是一种构造函数,用来生成 Set 数据结构。

Set 对象允许你储存任何类型的唯一值,无论是原始值或者是对象引用。

const s = new Set()[1, 2, 3, 4, 3, 2, 1].forEach(x => s.add(x))for (let i of s) {    console.log(i)// 1 2 3 4}// 去重数组的重复对象let arr = [1, 2, 3, 2, 1, 1][... new Set(arr)]// [1, 2, 3]

登录后复制

注意:向 Set 加入值的时候,不会发生类型转换,所以`5`和`”5″`是两个不同的值。Set 内部判断两个值是否不同,使用的算法叫做“Same-value-zero equality”,它类似于**精确相等**运算符(`===`),主要的区别是**`NaN`等于自身,而精确相等运算符认为`NaN`不等于自身。**

let set = new Set();let a = NaN;let b = NaN;set.add(a);set.add(b);set // Set {NaN}let set1 = new Set()set1.add(5)set1.add('5')console.log([...set1])// [5, "5"]

登录后复制

操作方法:

add(value):新增,相当于 array里的push。

delete(value):存在即删除集合中value。

has(value):判断集合中是否存在 value。

clear():清空集合。

遍历方法:遍历方法(遍历顺序为插入顺序)

keys():返回一个包含集合中所有键的迭代器。

values():返回一个包含集合中所有值得迭代器。

entries():返回一个包含Set对象中所有元素得键值对迭代器。

forEach(callbackFn, thisArg):用于对集合成员执行callbackFn操作,如果提供了 thisArg 参数,回调中的this会是这个参数,没有返回值。

字典(Map):

是一组键值对的结构,具有极快的查找速度。

const m = new Map()const o = {p: 'haha'}m.set(o, 'content')m.get(o)// contentm.has(o)// truem.delete(o)// truem.has(o)// false

登录后复制

操作方法:

set(key, value):向字典中添加新元素。get(key):通过键查找特定的数值并返回。has(key):判断字典中是否存在键key。delete(key):通过键 key 从字典中移除对应的数据。clear():将这个字典中的所有元素删除。

遍历方法:

Keys():将字典中包含的所有键名以迭代器形式返回。values():将字典中包含的所有数值以迭代器形式返回。entries():返回所有成员的迭代器。forEach():遍历字典的所有成员。

总结**:**

Set:

指的是“集合”结构

[value, value],键值与键名是一致的(或者说只有键值,没有键名)。

不能通过键查找特定值

Map:

指的是“字典”结构

 [key, value],键值与键名是不一致的

Map可用get()通过键查找特定值并返回

【相关推荐:javascript视频教程、web前端】

以上就是es6的set和map的区别是什么的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2933636.html

(0)
上一篇 2025年3月11日 20:34:06
下一篇 2025年3月7日 14:56:52

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • es6数组怎么去掉规定的值

    去掉方法:1、用“arr.splice(arr.indexOf(“指定值”),1)”语句,用indexOf()查找指定值的位置,再用splice()根据位置删除该元素;2、用“delete arr[arr.index…

    2025年3月11日
    200
  • es6中let与var的区别是什么

    区别:1、let变量有块级作用域,而var变量没有块级作用域;2、var变量存在变量提升(无暂时性死区约束),可以先使用再声明,而let变量不存在变量提升(有暂时性死区约束),必须先声明再使用;3、let变量不能重复声明,而var变量可以。…

    2025年3月11日
    200
  • 什么是es6模块化

    es6模块化是浏览器端与服务器端通用的模块化开发规范,其设计思想是尽量的静态化,使得编译时就能确定模块的依赖关系,及输入和输出的变量。在ES6模块化中,每个js文件都是一个独立的模块,导入模块用import关键字,导出用expost关键字。…

    2025年3月11日
    200
  • es6中数组新增常用的4个方法是什么

    es6中数组新增常用的4个方法是:1、forEach(),用于遍历数组,无返回值;2、filter(),过滤掉数组中不满足条件的值;3、map(),遍历数组,返回一个新数组;4、reduce(),让数组的前后两项进行某种计算,然后返回其值。…

    2025年3月11日 编程技术
    200
  • es6可以用双引号吗

    es6可以用双引号。在es6中,可用双引号来定义字符串,字符串就是一段以单引号或双引号包裹起来的文本,语法“var 变量名=”字符串文本”;”;若引号中用引号,需采取“外双内单”或“外单内双”格式,保证内外引号是不一…

    2025年3月11日
    200
  • es6中怎么判断两个对象是否相等

    在es6中,可用Object对象的is()方法来判断两个对象是否相等,该方法检测两个变量的值是否为同一个值,判断两个对象的引用地址是否一致,语法“Object.is(对象1,对象2)”;该方法会返回布尔值,若返回true则表示两个对象相等。…

    2025年3月11日
    200
  • es6怎么实现数组求和

    es6实现数组求和的方法:1、用reduce()方法,语法“arr.reduce(function(p,c){sum=p+c;});”;2、用forEach()方法,语法“arr.forEach(function(v){sum+=v})”。…

    2025年3月11日
    200
  • es6怎么判断元素是否在数组中

    判断方法:1、用“arr.includes(值)”,如果返回true则存在;2、用“arr.find(function(v){if(v==值{//true}})”语句;3、用“arr.some(i=>i===值)”,如果返回true则…

    2025年3月11日 编程技术
    200
  • es6中let和const的区别有哪些

    区别:1、let声明的是变量,其值和类型都可以改变,而const声明的是常量,不可以改变,不能重新赋值;2、let变量,声明后可以不初始化,而const常量,一旦声明,就必须立即初始化;3、const总是指向一个固定的地址,而let不固定。…

    2025年3月11日
    200
  • es6怎么实现变量交换

    变量交换方法:1、借助第三变量c,语法“c=a;a=b;b=c;”,这样变量a和b的值就可以互换;2、利用数组下标重新赋值,语法“a=[a,b];b=a[0];a=a[1];”;3、利用数组的解构赋值,语法“[a, b]=[b, a];”。…

    2025年3月11日 编程技术
    200

发表回复

登录后才能评论