ES6 -- Map 和 Set

Map

本文是阮一峰的ES6入门的过滤

1. 简介:

  1. 类似于对象

  2. 不限于字符串,各种类型的值(包括对象)都可以当作键

  3. Map具有极快的查找速度。

  4. 同一个 key 对应一个 value,后面的覆盖前面的。

    var m = new Map();
    m.set('Adam', 67);
    m.set('Adam', 88);
    m.get('Adam'); // 88

  5. 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. 语法:

  1. size 属性: 类似于 length

  2. set(key, value):设置 key 和 value

  3. get(key):get方法读取key对应的键值

  4. has(key):has方法返回一个布尔值

  5. delete(key):delete方法删除某个键,返回true

  6. 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. 实例:

  1. 根据同学的名字查找对应的成绩

    var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
    m.get('Michael'); // 95

4. 遍历:

  1. 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. 简介:

  1. 类似于数组,特点:成员的值是 唯一的

  2. 加入对象时总是不相等

    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. 实现函数方法:

  1. 快速数组去重

    [...new Set(array)]

4. 遍历

  • keys():返回键名的遍历器
  • values():返回键值的遍历器
  • entries():返回键值对的遍历器
  • forEach():使用回调函数遍历每个成员
posted @ 2017-06-26 17:32  Dear-LL  阅读(133)  评论(0)    收藏  举报