跳至正文

ES6入门教程笔记(10)-Set和Map

1. Set

基本用法

ES6新增了Set,它类似于数组,但是成员的值不会重复,都是唯一的。

const s = new Set();
[1, 2, 3, 4, 3, 2, 1].forEach(x => s.add(x));

for (let i of s) {
    console.log(i);
}
// 1, 2, 3, 4

上面代码循环向Set结构加入成员,结果表明不会添加重复的值。

Set结构可以接受一个数组进行初始化。

const s = new Set([1, 2, 3]);

Set的操作

Set的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)。下面先介绍四个操作方法。
- add(value):添加某个值,返回 Set 结构本身。
- delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
- has(value):返回一个布尔值,表示该值是否为Set的成员。
- clear():清除所有成员,没有返回值。

s.add(1).add(2);

s.has(1) // true
s.has(2) // true

s.delete(2);
s.has(2) // false

Set的遍历

有四个遍历方法,用于遍历成员。

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

由于Set结构类似于数组,没有键名,只有键值,所以实际上keys()values()的行为完全一致。

2. Map

含义和基本用法

JavaScript的对象本质上是键值对的集合(Hash结构),但键名只能用字符串。为解决这个问题,ES6提供了Map结构,它类似于对象,但各种类型的值(包括对象)都可以当作键。也就是说,Object结构提供了“字符串-值”的对应,Map结构提供了“值-值”的对应,如果你需要“键值对”的数据结构,Map比Object更合适。

const m = new Map();
const o = {p: 'Hello World'};

m.set(o, 'content')
m.get(o) // "content"

m.has(o) // true
m.delete(o) // true
m.has(o) // false

上面代码使用Mapset方法,将对象o当作m的一个键。

遍历方法

Map 结构原生提供三个遍历器生成函数和一个遍历方法。
- keys():返回键名的遍历器。
- values():返回键值的遍历器。
- entries():返回所有成员的遍历器。
- forEach():遍历 Map 的所有成员。

注:本文原始内容来自 ES6标准入门,有修改。

标签:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注