前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >讲一讲ES6新增的两种数据结构Map和Set

讲一讲ES6新增的两种数据结构Map和Set

作者头像
青年码农
发布2021-03-04 14:50:09
7330
发布2021-03-04 14:50:09
举报
文章被收录于专栏:青年码农青年码农

ES6中增加了Map和Set两种新的数据结构,Map是类似Object的一种键值对集合,区别在于Map的键不仅限于是字符串,其他各种类型的值包括对象都可以成为Map的键;Set是类似数组的一种数据结构,不同点在于Set中没有重复的值。

1 Map

创建Map对象

代码语言:javascript
复制
var map = new Map();

Map和Object有点类似,都是键值对来存储数据,和Object不同的是,JavaScript支持的所有类型都可以当作Map的key

代码语言:javascript
复制
var map = new Map();
map.set({}, "对象")
map.set([], "数组")
map.set("字符串", "字符串")
map.set(1, 1)
map.set(null, null)
map.set(undefined, undefined)
console.log(map)

方法

代码语言:javascript
复制
Map.prototype.clear()

移除Map对象的所有键/值对 。

代码语言:javascript
复制
Map.prototype.delete(key)

如果 Map 对象中存在该元素,则移除它并返回 true;否则如果该元素不存在则返回 false。随后调用 Map.prototype.has(key) 将返回 false 。

代码语言:javascript
复制
Map.prototype.entries()

返回一个新的 Iterator 对象,它按插入顺序包含了Map对象中每个元素的 [key, value] 数组。

代码语言:javascript
复制
Map.prototype.forEach(callbackFn[, thisArg])

按插入顺序,为 Map对象里的每一键值对调用一次callbackFn函数。如果为forEach提供了thisArg,它将在每次回调中作为this值。

代码语言:javascript
复制
Map.prototype.get(key)

返回键对应的值,如果不存在,则返回undefined。

代码语言:javascript
复制
Map.prototype.has(key)

返回一个布尔值,表示Map实例是否包含键对应的值。

代码语言:javascript
复制
Map.prototype.keys()

返回一个新的 Iterator对象, 它按插入顺序包含了Map对象中每个元素的键 。

代码语言:javascript
复制
Map.prototype.set(key, value)

设置Map对象中键的值。返回该Map对象。

代码语言:javascript
复制
Map.prototype.values()

返回一个新的Iterator对象,它按插入顺序包含了Map对象中每个元素的值 。

代码语言:javascript
复制
Map.prototype[@@iterator]()

返回一个新的Iterator对象,它按插入顺序包含了Map对象中每个元素的 [key, value] 数组。

2 Set

Set和Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key。

代码语言:javascript
复制
var set = new Set();

重复的元素会自动过滤

代码语言:javascript
复制
var set = new Set([1, 2, 3, 3, '3']);
set // Set {1, 2, 3, "3"}

方法

代码语言:javascript
复制
Set.prototype.add(value)

在Set对象尾部添加一个元素。返回该Set对象。

代码语言:javascript
复制
Set.prototype.clear()

移除Set对象内的所有元素。

代码语言:javascript
复制
Set.prototype.delete(value)

移除Set中与这个值相等的元素,返回Set.prototype.has(value)在这个操作前会返回的值(即如果该元素存在,返回true,否则返回false)。Set.prototype.has(value)在此后会返回false。

代码语言:javascript
复制
Set.prototype.entries()

返回一个新的迭代器对象,该对象包含Set对象中的按插入顺序排列的所有元素的值的[value, value]数组。为了使这个方法和Map对象保持相似, 每个值的键和值相等。

代码语言:javascript
复制
Set.prototype.forEach(callbackFn[, thisArg])

按照插入顺序,为Set对象中的每一个值调用一次callBackFn。如果提供了thisArg参数,回调中的this会是这个参数。

代码语言:javascript
复制
Set.prototype.has(value)

返回一个布尔值,表示该值在Set中存在与否。

代码语言:javascript
复制
Set.prototype.keys()

与values()方法相同,返回一个新的迭代器对象,该对象包含Set对象中的按插入顺序排列的所有元素的值。

代码语言:javascript
复制
Set.prototype.values()

返回一个新的迭代器对象,该对象包含Set对象中的按插入顺序排列的所有元素的值。

代码语言:javascript
复制
Set.prototype[@@iterator]()

返回一个新的迭代器对象,该对象包含Set对象中的按插入顺序排列的所有元素的值。

小结

Map和Set是ES6标准新增的数据类型,

Set和Map主要的应用场景在于数组去重和数据存储,

Set是一种叫做集合的数据结构,Map是一种叫做字典的数据结构

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 青年码农 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档