分享更有价值
被信任是一种快乐

Map和Set两种数据结构在ES6的作用是什么

文章页正文上

这篇文章主要介绍“Map和Set两种数据结构在ES6的作用是什么”,在日常操作中,相信很多人在Map和Set两种数据结构在ES6的作用是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Map和Set两种数据结构在ES6的作用是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!Set是一种叫做集合的数据结构,Map是一种叫做字典的数据结构那什么是集合?什么又是字典呢?集合集合,是由一堆无序的、相关联的,且不重复的内存结构【数学中称为元素】组成的组合字典字典(dictionary)是一些元素的集合。每个元素有一个称作key 的域,不同元素的key 各不相同它们之间又有什么区别呢?共同点:集合、字典都可以存储不重复的值不同点:集合是以[值,值]的形式存储元素,字典是以[键,值]的形式存储背景大多数主流编程语言都有多种内置的数据集合。例如Python拥有列表(list)、元组(tuple)和字典(dictionary),Java有列表(list)、集合(set)、队列(queue)然而 JavaScript 直到ES6的发布之前,只拥有数组(array)和对象(object)这两个内建的数据集合在 ES6 之前,我们通常使用内置的 Object 模拟Map但是这样模拟出来的map会有一些缺陷,如下:鸿蒙官方战略合作共建——HarmonyOS技术社区Object的属性键是String或Symbol,这限制了它们作为不同数据类型的键/值对集合的能力Object不是设计来作为一种数据集合,因此没有直接有效的方法来确定对象具有多少属性Set定义: Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用,Set对象是值的集合,你可以按照插入的顺序迭代它的元素。Set中的元素只会出现一次,即 Set 中的元素是唯一的Set本身是一个构造函数,用来生成 Set 数据结构基本使用语法new Set([iterable]) 接收一个数组(或者具有 iterable 接口的其他数据结构), 返回一个新的Set对象上面代码可以看出 Set 是可以去除数组中的重复元素属性及方法属性size: 返回集合中所包含的元素的数量操作方法add(value): 向集合中添加一个新的项delete(value): 从集合中删除一个值has(value): 如果值在集合中存在,返回ture, 否则返回falseclear(): 移除集合中的所有项遍历方法keys(): 返回键名的遍历器values(): 返回键值的遍历器entries(): 返回键值对的遍历器forEach(): 使用回调函数遍历每个成员应用场景因为 Set 结构的值是唯一的,我们可以很轻松的实现以下WeakSetWeakSet 对象是一些对象值的集合, 并且其中的每个对象值都只能出现一次。在WeakSet的集合中是唯一的WeakSet 的出现主要解决弱引用对象存储的场景, 其结构与Set类似与Set的区别与Set相比,WeakSet 只能是对象的集合,而不能是任何类型的任意值WeakSet集合中对象的引用为弱引用。如果没有其他的对WeakSet中对象的引用,那么这些对象会被当成垃圾回收掉。这也意味着WeakSet中没有存储当前对象的列表。正因为这样,WeakSet 是不可枚举的WeakSet 的属性跟操作方法与 Set 一致,不同的是 WeakSet 没有遍历方法,因为其成员都是弱引用,弱引用随时都会消失,遍历机制无法保证成员的存在上面一直有提到弱引用,那弱引用到底是指什么呢?弱引用是指不能确保其引用的对象不会被垃圾回收器回收的引用,换句话说就是可能在任意时间被回收MapMap 对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者原始值) 都可以作为一个键或一个值。一个Map对象在迭代时会根据对象中元素的插入顺序来进行 — 一个 for…of 循环在每次迭代后会返回一个形式为[key,value]的数组基本使用语法new Map([iterable]) Iterable 可以是一个数组或者其他 iterable 对象,其元素为键值对(两个元素的数组,例如: [[ 1, ‘one’ ],[ 2, ‘two’ ]])。每个键值对都会添免费云主机、域名加到新的 Map属性及方法基本跟 Set 类似,同样具有如下方法属性size: 返回 Map 结构的元素总数操作方法set(key, value): 向 Map 中加入或更新键值对get(key): 读取 key 对用的值,如果没有,返回 undefinedhas(key): 某个键是否在 Map 对象中,在返回 true 否则返回 falsedelete(key): 删除某个键,返回 true, 如果删除失败返回 falseclear(): 删除所有元素遍历方法keys():返回键名的遍历器values():返回键值的遍历器entries():返回所有成员的遍历器forEach():遍历 Map 的所有成员应用场景Map 会保留所有元素的顺序, 是在基于可迭代的基础上构建的,如果考虑到元素迭代或顺序保留或键值类型丰富的情况下都可以使用,下面摘抄自 vue3 源码中依赖收集的核心实现WeakMapWeakMap 对象是一组键/值对的集合,其中的键是弱引用的。其键必须是对象,而值可以是任意的与Map的区别Map 的键可以是任意类型,WeakMap 的键只能是对象类型WeakMap 键名所指向的对象,不计入垃圾回收机制WeakMap 的属性跟操作方法与 Map 一致,同 WeakSet 一样,因为是弱引用,所以 WeakSet 也没有遍历方法类型的转换Map 转为 ArrayArray 转为 Map Map 转为 ObjectObject 转为 Map总结Set、Map、WeakSet、WeakMap、都是一种集合的数据结构Set、WeakSet 是[值,值]的集合,且具有唯一性Map 和 WeakMap 是一种[键,值]的集合,Map 的键可以是任意类型,WeakMap 的键只能是对象类型Set 和 Map 有遍历方法,WeakSet 和 WeakMap 属于弱引用不可遍历到此,关于“Map和Set两种数据结构在ES6的作用是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注云技术网站,小编会继续努力为大家带来更多实用的文章!

相关推荐: 如何定义CSS类样式

本篇内容主要讲解“如何定义CSS类样式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何定义CSS类样式”吧!   一:css样式是干啥的   CSS样式是我们称的样式表(CascadingStyleSheets)…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册