es6中的Set和Map数据结构

Set

Set 类似于数组,但是成员的值都是唯一的,没有重复的值。

1
2
3
4
5
6
// 数组去重
const arr = [1, 2, 3, 3];
const newArr = [...new Set(arr)];

// 字符串去重
[...new Set('ababbc')].join('');

实例的属性和方法

  • size:返回 Set 实例成员总数
  • add(value):添加某个值,返回 Set 结构本身
  • delete(value):删除某个值,返回布尔值,表示是否删除成功
  • has(value):返回布尔值,表示该值是否为 Set 的成员
  • clear():清除所有值

遍历方法

  • keys():返回键名的遍历器
  • values():返回键值的遍历器
  • entries():返回键值对的遍历器
  • forEach():遍历每个成员

Map

Map 类似于对象,也是键值对的结合,但“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

1
2
3
4
const m = new Map();
const o = { p: 'Hello World' };
m.set(o, 'content');
m.get(o); // 'content'

Map 也接受一个数组作为参数。该数组的成员是一个个表示键值对的数组。

1
2
3
4
5
6
7
8
const map = new Map([
['name', '张三'],
['title', 'Author']
]);

map.size // 2
map.has('name') // true
map.get('name') // "张三"

实例的属性和方法

  • size:返回成员总数
  • set(key, value):返回整个 Map 结构
  • get(key):根据 key 返回 vlaue
  • has(key):是否有某个键
  • delete(key):删除某个键,返回布尔值
  • clear():清除所有成员

遍历方法

  • keys():返回键名的遍历器
  • values():返回键值的遍历器
  • entries():返回键值对的遍历器
  • forEach():遍历每个成员