JavaScript 是一门动态类型语言,变量可以存储任何类型的值。然而,在某些情况下,我们需要存储一组唯一的值或者键值对。在 ES6 中,引入了两种新的数据结构:Set 和 Map。本文将详细介绍这两种数据结构的使用方法和应用场景。
Set 数据结构
Set 数据结构类似于数组,但是成员的值都是唯一的,没有重复的值。它是一种可迭代的数据结构,可以通过 for...of 循环遍历它的成员。Set 可以用来去除数组中的重复元素。
创建 Set
可以通过以下两种方法创建 Set:
const set1 = new Set(); // 创建一个空的 Set const set2 = new Set([1, 2, 3]); // 从数组创建 Set
添加元素
可以使用 add 方法向 Set 中添加元素:
set1.add(1); set1.add(2); set1.add(3);
删除元素
可以使用 delete 方法删除 Set 中的元素:
set1.delete(2);
判断是否包含某个元素
可以使用 has 方法判断 Set 是否包含某个元素:
set1.has(1); // true set1.has(2); // false
获取元素个数
可以使用 size 属性获取 Set 中元素的个数:
set1.size; // 2
遍历 Set
可以使用 for...of 循环遍历 Set 中的元素:
for (let item of set1) { console.log(item); }
将 Set 转换为数组
可以使用 Array.from 方法将 Set 转换为数组:
const arr = Array.from(set1);
Set 的应用
Set 可以用来去除数组中的重复元素:
const arr = [1, 2, 2, 3, 3, 3]; const set = new Set(arr); const uniqueArr = Array.from(set); // [1, 2, 3]
Map 数据结构
Map 数据结构类似于对象,也是键值对的集合。不同之处在于,Map 的键可以是任意类型,而对象的键只能是字符串。Map 也是一种可迭代的数据结构,可以通过 for...of 循环遍历它的成员。
创建 Map
可以通过以下两种方法创建 Map:
const map1 = new Map(); // 创建一个空的 Map const map2 = new Map([['name', '张三'], ['age', 18]]); // 从数组创建 Map
添加键值对
可以使用 set 方法向 Map 中添加键值对:
map1.set('name', '张三'); map1.set('age', 18);
删除键值对
可以使用 delete 方法删除 Map 中的键值对:
map1.delete('age');
判断是否包含某个键
可以使用 has 方法判断 Map 是否包含某个键:
map1.has('name'); // true map1.has('age'); // false
获取键值对个数
可以使用 size 属性获取 Map 中键值对的个数:
map1.size; // 1
遍历 Map
可以使用 for...of 循环遍历 Map 中的键值对:
for (let [key, value] of map1) { console.log(key, value); }
将 Map 转换为数组
可以使用 Array.from 方法将 Map 转换为数组:
const arr = Array.from(map1);
Map 的应用
Map 可以用来存储一些复杂的数据结构,例如对象作为值:
const user1 = { name: '张三', age: 18 }; const user2 = { name: '李四', age: 20 }; const map = new Map(); map.set('user1', user1); map.set('user2', user2);
总结
Set 和 Map 是 ES6 中新增的数据结构,它们分别用来存储一组唯一的值和键值对。Set 可以用来去除数组中的重复元素,Map 可以用来存储一些复杂的数据结构。在实际开发中,我们可以根据具体的需求选择使用 Set 或 Map。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6558684dd2f5e1655d296cff