美文网首页
深入理解ES6:7.Set 集合与 Map 集合

深入理解ES6:7.Set 集合与 Map 集合

作者: 独木舟的木 | 来源:发表于2019-11-28 09:56 被阅读0次

ECMAScript 6 中的 Set 集合

  • Set 集合是一种无重复元素的列表。
  • Set 集合中的 +0 和 -0 被认为是相等的。

创建 Set 集合并添加元素

// 创建 Set 集合
let set = new Set();

// 用数组来初始化 Set 集合
let set = new Set([1, 2, 3, 4, 5, 5, 5, 5]);
console.log(set.size); // 5

// 添加元素
set.add(5);
set.add('5');

// 获取集合元素数量
console.log(set.size); // 2

// 检测 Set 集合中是否存在某个值
console.log(set.has(5)); // true

移除元素

  • delete() 方法:移除 Set 集合中的某一个元素。
  • clear() 方法:移除集合中的所有元素。

Set 集合的 forEach 方法

Set 集合的 forEach 方法的三个参数:

  • 参数一:Set 集合下一次索引的位置。
  • 参数二:同参数一!!!!
  • 被遍历的 Set 集合本身。
set.forEach(function(value, key, ownerSet) {
  console.log(key + ' ' + value);
  console.log(ownerSet === set);
});

/*
1 1
true
2 2
true
*/

将 Set 集合转换为数组

let set = new Set([1, 2, 3, 4, 5, 5, 5, 5]);

// 通过展开运算符将 Set 集合转换为数组
let array = [...set];

console.log(array); // [ 1, 2, 3, 4, 5 ]

Weak Set 集合

Weak Set 集合只存储对象的弱引用,并且不可以存储原始值;集合中的弱引用如果是对象唯一的引用,则会被回收并释放相应内存。

let set = new WeakSet(),
  key = {};

// Set.add():向集合中添加对象
set.add(key);

// Set.has():检查集合中是否存在指定对象的引用
console.log(set.has(key)); // true

// Set.delete():向集合中删除一个元素
set.delete(key);

console.log(set.has(key)); // false

如果你只需要跟踪对象引用,你更应该使用 Weak Set 集合而不是普通的 Set 集合。

ECMAScript 6 中的 Map 集合

Map 集合内含有多组键值对,集合中每个元素分别存放着可访问的键名和它对应的值。

在 Map 集合中,可以将对象名作为键名。

let map = new Map();

// 向 Map 集合中添加新的元素
map.set('key', 'value');

// 从 Map 集合中获取信息
console.log(map.get('key')); // value

Map 集合支持的方法

  • has(key):检测指定的键名在 Map 集合中是否已经存在。
  • delete(key):从 Map 集合中移除指定键名及其对应的值。
  • clear():移除 Map 集合中的所有键值对。

Map 集合的初始化方法

可以向 Map 构造函数传入数组来初始化一个 Map 集合。

let map = new Map([
  ['name', 'Nicholas'],
  ['age', 25]
]);

console.log(map.has('name')); // true
console.log(map.get('name')); // Nicholas
console.log(map.has('age')); // true
console.log(map.get('age')); // 25
console.log(map.size); // 2

Map 集合的 forEach() 方法

let map = new Map([
  ['name', 'Nicholas'],
  ['age', 25]
]);

map.forEach(function(value, key, ownerMap) {
  console.log(key + ' ' + value);
  console.log(ownerMap === map);
});

/* 
name Nicholas
true
age 25
true
*/

Weak Map 集合

  • Weak Map 是弱引用 Map 集合,用于存储对象的弱引用。
  • Weak Map 集合中的键名必须是一个对象。
  • Weak Map 集合中的键值对,只有键名会遵从垃圾回收机制,如果值是一个对象,则保存的是对象的强引用,不会触发垃圾回收机制。
  • Weak Map 集合最大的用途是保存 Web 页面中的 DOM 元素。

相关文章

  • 深入理解ES6:7.Set 集合与 Map 集合

    ECMAScript 6 中的 Set 集合 Set 集合是一种无重复元素的列表。 Set 集合中的 +0 和 -...

  • ES6中的Set集合

    在ES6中,出现了新的概念:Set集合和Map集合。在ES6之前,数组是JS中唯一的集合类型。如果对数组有深入理解...

  • ES6学习-7.Set集合与Map集合

    一、Set集合 Set类型是一种有序列表,其中包含了一些相互独立的非重复值,可以快速访问其中的数据,更有效的追踪各...

  • es6-Set集合与Map集合

    title: es6-Set集合与Map集合date: 2018-02-08 21:55:41tags: es6 ...

  • Map集合深入

    下面一段代码是使用entrySet来将Map集合中的对象进行迭代,entrySet返回的是key与value对应的...

  • 「 深入浅出 」集合Map

    系列文章: 「 深入浅出 」java集合Collection和Map 「 深入浅出 」集合List 「 深入浅出 ...

  • Map集合Map<Integer,String> m

    01Map集合概述 A:Map集合概述:我们通过查看Map接口描述,发现Map接口下的集合与Collection接...

  • Map接口

    01Map集合概述 A:Map集合概述:我们通过查看Map接口描述,发现Map接口下的集合与Collection接...

  • Java 容器 - 一文详解HashMap

    Map 类集合 Java Map类集合,与Collections类集合存在很大不同。它是与Collection 类...

  • 7. Set集合与Map集合

    JS 在以前只有一种集合类型,也就是数组类型。ES6 向 JS 添加了 Set 与 Map集合类型。 7.1 ES...

网友评论

      本文标题:深入理解ES6:7.Set 集合与 Map 集合

      本文链接:https://www.haomeiwen.com/subject/zopvwctx.html