Set

ES6 提供了新的数据结构 Set。它类似于数组(类数组),但是成员的值都是唯一的,没有重复的值。

  1. const set = new Set();
  2. [2, 3, 5, 4, 5, 2, 2].forEach(x => set.add(x));
  3. for (let i of set) {
  4. console.log(i); // 2 3 5 4
  5. }

size

Set.prototype.size属性,可以获取Set类数组的长度。

  1. let set = new Set([1,4,7]);
  2. set.size // 3

add()

Set.prototype.add(value)方法,在Set对象尾部添加一个元素,返回这个Set对象。

  1. let set = new Set([1,4,7]);
  2. set.add(9) // Set(4) {1, 4, 7, 9}

clear()

Set.prototype.clear()方法,可以清空Set类数组中的所有元素。

  1. let set = new Set([1,4,7]);
  2. set.clear() // Set(0) {}

delete()

Set.prototype.delete(value)方法,移除Set中与传入值相等的元素,返回Set.prototype.has(value)操作会返回的值(判断是否存在,返回true,否则返回false)。

  1. let set = new Set([1,4,7]);
  2. set.delete(1) // 返回true 还剩 Set(2) {4, 7}

has()

Set.prototype.has(value)方法,返回一个Boolean值,表示这个值是否存在Set中。

  1. let set = new Set([1,4,7]);
  2. set.has(4) //true

字符串

  1. let set = new Set('hello world');
  2. console.log(set); // Set(8) {"h", "e", "l", "o", " ", …}

数组

  1. let set = new Set([1,2,3,4]);
  2. console.log(set); // Set(4) {1, 2, 3, 4}

Set数组去重

  1. const numbers = [2,3,4,4,2,3,3,4,4,5,5,6,6,7,5,32,3,4,5]
  2. console.log([...new Set(numbers)])

Map

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

size

  1. let map = new Map(); // Map(5) {1 => 2, "a" => 3, null => 3, undefined => 3, true => 3}
  2. map.size // 5

set()

Map.prototype.set(key, value)方法,设置Map对象中的键值,返回这个Map对象

  1. let map = new Map();
  2. map.set(1,2) // Map(1) {1 => 2}

get()

Map.prototype.get(key)方法,获取对应传入值的value,如果不存在返回undefined

  1. let map = new Map([[1,2],['a', 3],[null,4],[undefined,5],[true,6],[true,7]]);
  2. console.log(map.get(true)); // 7

为什么是7呢?看一下数据都是什么

  1. // map的值也是唯一的,会保留最后一个相同的值。
  2. Map(5) {1 => 2, "a" => 3, null => 4, undefined => 5, true => 7}

has()

Map.prototype.has(key)方法,返回一个布尔值,表示Map实例是否包含键对应的值。

  1. let map = new Map([1,2])
  2. map.has(1) // true
  3. map.has(2) // false

delete()

Map.prototype.delete(key)方法,如果 Map 对象中存在该元素,则移除它并返回 true;否则如果该元素不存在则返回 false

  1. let map = new Map([[1,2],['a', 3]]);
  2. map.delete(1) // true
  3. console.log(map); // Map(1) {"a" => 3}

clear()

Map.prototype.clear()方法,移除Map对象的所有键/值对 。

  1. let map = new Map([[1,2],['a', 3]]);
  2. map.clear() // Map(0) {}