ES6 -- Map 和 Set
Map
本文是阮一峰的ES6入门的过滤
1. 简介:
-
类似于对象
-
键不限于字符串,各种类型的值(包括对象)都可以当作键
-
Map
具有极快的查找速度。 -
同一个
key
对应一个value
,后面的覆盖前面的。var m = new Map(); m.set('Adam', 67); m.set('Adam', 88); m.get('Adam'); // 88
-
Map 的键实际上是跟内存地址绑定的
const map = new Map(); const k1 = ['a']; const k2 = ['a']; map .set(k1, 111) .set(k2, 222); map.get(k1) // 111 map.get(k2) // 222
2. 语法:
-
size 属性: 类似于 length
-
set(key, value):设置 key 和 value
-
get(key):get方法读取key对应的键值
-
has(key):has方法返回一个布尔值
-
delete(key):delete方法删除某个键,返回true
-
clear():clear方法清除所有成员
const map = new Map(); map.set('foo', true); map.set('bar', false); map.size // 2 map.get('foo') // true map.has('foo') // true map.delete(undefined) map.clear()
3. 实例:
-
根据同学的名字查找对应的成绩
var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]); m.get('Michael'); // 95
4. 遍历:
-
Map 结构转为数组结构,比较快速的方法是使用扩展运算符
(...)
。const map = new Map([ [1, 'one'], [2, 'two'], [3, 'three'], ]); [...map.keys()] // [1, 2, 3] [...map.values()] // ['one', 'two', 'three'] [...map.entries()] // [[1,'one'], [2, 'two'], [3, 'three']] [...map] // [[1,'one'], [2, 'two'], [3, 'three']]
Set
1. 简介:
-
类似于数组,特点:成员的值是 唯一的
-
加入对象时总是不相等
let set = new Set(); set.add({}); set.size // 1 set.add({}); set.size // 2
2. 语法:
add(value)
:添加某个值,返回 Set 结构本身。delete(value)
:删除某个值,返回一个布尔值,表示删除是否成功。has(value)
:返回一个布尔值,表示该值是否为Set的成员。clear()
:清除所有成员,没有返回值。size
:返回成员数
3. 实现函数方法:
-
快速数组去重
[...new Set(array)]
4. 遍历
keys()
:返回键名的遍历器values()
:返回键值的遍历器entries()
:返回键值对的遍历器forEach()
:使用回调函数遍历每个成员