在 ES6 中,Set 和 Map 是两个非常实用的数据结构。这两个数据结构在前端开发中被广泛应用,而且它们的使用方式也非常简单。本文将详细介绍 ES6 中的 Set 和 Map 的定义、用法和应用场景,希望能给前端开发者带来帮助。
Set 的定义和用法
Set 是一种集合型的数据结构,它允许你存储不重复的值。Set 内部采用的是哈希表数据结构,所以插入和删除的平均时间复杂度是 O(1),查找的时间复杂度也是 O(1)。
Set 的定义
创建 Set 可以通过直接调用构造函数 Set()
或者使用 Set 字面量表示法创建(即使用花括号 {}
包裹需要存储的值),示例如下:
-- -------------------- ---- ------- --- ----- - --- ------ -- ---- --- --- ----- - --- ------- -- ---- -- ------ --- --- ----- - --- ------------- -- ------- --- -- ---------- --- --- ----- - --- ------ ------------- -- ---- ------------- -------------
Set 的用法
Set 有一些常见的用法,例如添加、删除、清空等。
1. 添加元素
可以通过 add()
方法向 Set 中添加元素:
mySet.add(4); // 添加元素 4
2. 删除元素
可以使用 delete()
方法删除指定元素,也可以使用 clear()
方法清空整个 Set:
mySet.delete(4); // 删除元素 4 mySet.clear(); // 清空 Set
3. 获取 Set 的长度
可以使用 size
属性获取 Set 的长度:
console.log(mySet.size); // 获取 Set 的长度
4. 遍历 Set
可以使用 forEach()
方法遍历 Set:
mySet.forEach(function(value) { console.log(value); });
5. 判断元素是否存在
可以使用 has()
方法判断某个元素是否存在于 Set 中:
console.log(mySet.has(2)); // 判断 2 是否存在于 Set 中
Set 的应用场景
Set 可以用于去重、判断某个元素是否存在等应用场景。例如:
// 数组去重 let arr = [1, 2, 3, 1, 2]; let mySet = new Set(arr); let newArr = Array.from(mySet); // 转换成数组,排除重复元素 console.log(newArr); // [1, 2, 3]
Map 的定义和用法
Map 是一种键值对的数据结构,它可以存储任意类型的键(包括对象、函数等)和值。Map 的实现基于红黑树数据结构,所以可以快速查找、添加和删除键值对。
Map 的定义
创建 Map 可以通过直接调用构造函数 Map()
或者使用 Map 字面量表示法创建(即使用花括号 {}
包裹需要存储的键值对),示例如下:
let myMap = new Map(); // 创建空的 Map let myMap = new Map([['key1', 'value1'], ['key2', 'value2'], ['key3', 'value3']]); // 通过数组创建 Map // 使用字面量表示法创建 Map let myMap = new Map(); myMap.set('key1', 'value1'); // 添加键值对 myMap.set('key2', 'value2'); myMap.set('key3', 'value3');
Map 的用法
Map 有一些常见的用法,例如添加、删除、清空等。
1. 添加键值对
可以使用 set()
方法向 Map 中添加键值对:
myMap.set('key4', 'value4'); // 添加键值对
2. 删除键值对
可以使用 delete()
方法删除指定键值对,也可以使用 clear()
方法清空整个 Map:
myMap.delete('key4'); // 删除键值对 myMap.clear(); // 清空 Map
3. 获取 Map 的长度
可以使用 size
属性获取 Map 的长度:
console.log(myMap.size); // 获取 Map 的长度
4. 遍历 Map
可以使用 forEach()
方法遍历 Map:
myMap.forEach(function(value, key) { console.log(key + ' = ' + value); });
5. 判断键是否存在
可以使用 has()
方法判断某个键是否存在于 Map 中:
console.log(myMap.has('key3')); // 判断 key3 是否存在于 Map 中
Map 的应用场景
Map 可以用于存储复杂数据结构,例如对象、函数等类型的键值对。例如:
-- -------------------- ---- ------- -- ---- --- ----- - --- ------ ----------- ----- ------ ---- -- -- - ------ -- --- ----------- ----- -------- ---- -- -- - ------ -- --- ----------------------- ----- ------ ---- -- ---- -- -- --- ---- -- ---- --- ----- - --- ------ -------------------- - ------------------ --------- -- ------------ -------------------------------- - ------------------ --------- ---- -- ------
总结
以上就是 ES6 中的 Set 和 Map 的详细介绍和应用。Set 和 Map 虽然都是相对比较新的数据结构,在前端开发中却有着广泛的应用场景。熟练掌握 Set 和 Map 的使用方法,可以让我们更加高效地处理一些常见的数据结构问题。。
练习:
- 请写出一个将数组去重的例子,使用 Set 和 Array.from() 两种方式来实现。
-- -------------------- ---- ------- -- -- --- ------ --- --- - ----- ---- ---- ---- ----- --- ----- - --- --------- --- ------ - ------------------ -------------------- -- ----- ---- ---- -- -- ------------ ------ --- --- - ----- ---- ---- ---- ----- --- ------ - -------------- ---------- -------------------- -- ----- ---- ----
- 请写出一个将两个数组合并的例子,使用 concat() 和 Set 两种方式来实现。
-- -------------------- ---- ------- -- -- -------- ---- --- ---- - --- -- --- --- ---- - --- -- --- --- ------ - ------------------ -------------------- -- --- -- -- -- -- -- -- -- --- ---------- --- ---- - --- -- --- --- ---- - --- -- --- --- ----- - --- ------------- ---------- --- ------ - ------------------ -------------------- -- --- -- -- -- -- --
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e6f8c0f6b2d6eab324e90a