ECMAScript 2021:JS 的快速数据结构 --Set 与 Map
在 JavaScript 中,数据结构一直是开发者们必须要了解的一个重要知识点。随着ES2021 的发布,Set 和 Map 数据结构被引入到了 JavaScript 中,为我们带来了更加高效和简单的实现方式。本文将详细介绍 ES2021 中的Set和Map数据结构,以及如何在项目中应用它们。
Set 数据结构
Set 是一种类似于数组的数据结构,但里面的元素不会重复,它只会存储唯一的值。 Set 中的元素可以是任意类型的,例如数字、字符串甚至是对象等等。Set 既然是一种集合(Collection),那么肯定包含集合操作,让我们来看看 Set 中几个有用的方法。
创建 Set
可以使用 Set 构造函数来创建 Set 的实例。在创建实例时,也可以传入一个可迭代对象用于初始化 Set 实例中的元素。
const set1 = new Set(); const set2 = new Set([1,2,3,4,5]);
添加元素
Set 的 add 方法可以添加一个元素到 Set 中,如果该元素已经存在于 Set 中,则不会进行任何操作。
const set1 = new Set(); set1.add(1); set1.add(2); set1.add(3); set1.add(1); // Set 中已经存在元素 1,这个会被忽略 console.log(set1); // 输出 Set {1, 2, 3}
删除元素
Set 的 delete 方法可以删除 Set 中指定的元素。
const set1 = new Set([1,2,3]); set1.delete(2); console.log(set1); // 输出 Set {1, 3}
清空 Set
可以使用 clear 方法清空 Set 中所有元素。
const set1 = new Set([1,2,3]); set1.clear(); console.log(set1); // 输出 Set {}
判断是否包含某个元素
可以使用 has 方法来判断 Set 中是否包含指定元素。
const set1 = new Set([1,2,3]); set1.has(2); // true set1.has(4); // false
获取 Set 的长度
可以使用 size 属性获取 Set 实例中元素的数量。
const set1 = new Set([1,2,3]); set1.size; // 3
遍历 Set
Set 可以使用 for-of 循环来遍历所有元素。
const set1 = new Set([1,2,3]); for (const item of set1) { console.log(item); } // 输出 // 1 // 2 // 3
Map 数据结构
Map 是一种键值对形式的数据结构,每个键值对都是一个 Entry。其中键可以是任意类型的值,如数字、字符串或对象,而值可以是任意类型的 JavaScript 值。让我们来看看 Map 中几个有用的方法。
创建 Map
可以使用 Map 构造函数创建 Map 的实例。在创建实例时,也可以传入一个可迭代对象用于初始化 Map 实例中的元素。
const map1 = new Map(); const map2 = new Map([['key1', 'value1'], ['key2', 'value2']]);
设置 Map 的值
Map 的 set 方法用于在 Map 中设置一个键/值对。
const map1 = new Map(); map1.set('key1', 'value1'); map1.set('key2', 'value2');
获取 Map 的值
Map 的 get 方法用于获取指定键的值。
const map1 = new Map([['key1', 'value1'], ['key2', 'value2']]); map1.get('key1'); // 'value1'
删除 Map 的值
Map 的 delete 方法用于从 Map 中删除指定键的键值对。
const map1 = new Map([['key1', 'value1'], ['key2', 'value2']]); map1.delete('key1');
清空 Map
Map 的 clear 方法用于清空 Map 中的所有键值对。
const map1 = new Map([['key1', 'value1'], ['key2', 'value2']]); map1.clear();
判断 Map 是否包含某个键
Map 的 has 方法用于判断 Map 中是否包含指定的键。
const map1 = new Map([['key1', 'value1'], ['key2', 'value2']]); map1.has('key1'); // true map1.has('key3'); // false
获取 Map 的长度
可以使用 size 属性获取 Map 实例中键值对的数量。
const map1 = new Map([['key1', 'value1'], ['key2', 'value2']]); map1.size; // 2
遍历 Map
Map 可以使用 for-of 循环来遍历所有键值对。
const map1 = new Map([['key1', 'value1'], ['key2', 'value2']]); for (const [key, value] of map1) { console.log(key, value); } // 输出 // 'key1' 'value1' // 'key2' 'value2'
总结
ES2021 中引入了 Set 和 Map 数据结构,它们能更加高效地处理某些问题,比如在 Set 中查找重复值或在 Map 中存储键值对。Set 和 Map 操作简单明了,对于开发者来说非常友好,同时它们也是一种更强大和更快速的数据结构,希望本文能够帮助你理解和应用它们。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6540d6c47d4982a6eba684c1