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  阅读(100)  评论(0编辑  收藏  举报