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

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

1 Map

创建Map对象

var map = new Map();

复制

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

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)

复制

方法

Map.prototype.clear()

复制

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

Map.prototype.delete(key)

复制

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

Map.prototype.entries()

复制

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

Map.prototype.forEach(callbackFn[, thisArg])

复制

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

Map.prototype.get(key)

复制

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

Map.prototype.has(key)

复制

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

Map.prototype.keys()

复制

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

Map.prototype.set(key, value)

复制

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

Map.prototype.values()

复制

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

Map.prototype[@@iterator]()

复制

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


2 Set

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

var set = new Set();

复制

重复的元素会自动过滤

var set = new Set([1, 2, 3, 3, '3']);
set // Set {1, 2, 3, "3"}

复制

方法

Set.prototype.add(value)

复制

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

Set.prototype.clear()

复制

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

Set.prototype.delete(value)

复制

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

Set.prototype.entries()

复制

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

Set.prototype.forEach(callbackFn[, thisArg])

复制

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

Set.prototype.has(value)

复制

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

Set.prototype.keys()

复制

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

Set.prototype.values()

复制

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

Set.prototype[@@iterator]()

复制

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


小结

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

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

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

相关文章
|
1天前
|
存储 JavaScript
ES6+新特性-Symbol与Set/Map数据结构
ES6 引入了三种新的数据结构:Symbol、Set和Map。Symbol是唯一且不可变的值,常用于定义对象的独特属性;Set存储不重复值,适合数组去重;Map则是键值对集合,键可为任意类型,提供了更灵活的存储方式。这些新数据结构提供了更高效的操作手段,分别解决了属性命名冲突、数据去重和复杂键值对存储的问题。示例展示了如何使用Symbol、Set和Map进行基本操作。
|
1天前
|
存储 编译器 C++
C++:map&set 对红黑树的封装
C++:map&set 对红黑树的封装
10 1
|
1天前
|
存储
Map与Set的经典OJ题
Map与Set的经典OJ题
12 3
|
1天前
|
存储 自然语言处理 容器
Map与Set
Map与Set
12 3
|
1天前
|
存储 C++ 容器
C++:STL - set & map
C++:STL - set & map
15 4
|
1天前
|
存储 C++ 容器
[数据结构]-map和set
[数据结构]-map和set
|
1天前
|
机器学习/深度学习 算法 测试技术
【单调栈】3113. 边界元素是最大值的子数组数目
【单调栈】3113. 边界元素是最大值的子数组数目
|
1天前
|
存储 NoSQL C语言
数据结构——顺序栈与链式栈的实现-2
数据结构——顺序栈与链式栈的实现
数据结构——顺序栈与链式栈的实现-2
|
1天前
|
存储 C语言
数据结构——顺序栈与链式栈的实现-1
数据结构——顺序栈与链式栈的实现
数据结构——顺序栈与链式栈的实现-1
|
1天前
栈的基本应用
栈的基本应用
12 3