TypeScript中Map与Set的区别小结
作者:心随雨下
TypeScript中Map和Set是两种不同的集合类型,Map用于存储键值对,支持任意类型键并保持插入顺序,Set用于存储唯一值,自动去重,两者都提供高效的查找操作,下面就来详细的介绍一下两者的区别
在TypeScript中,Map和Set都是ES6引入的集合类型,它们有各自不同的用途和特性:
Map(映射)
Map是键值对的集合,其中键可以是任意类型(对象、函数、基本类型等)。
主要特性:
// 创建Map const map = new Map<string, number>(); // 添加键值对 map.set('name', 'Alice'); map.set('age', 25); map.set(1, 'one'); // 键可以是数字 // 获取值 console.log(map.get('name')); // 'Alice' // 检查键是否存在 console.log(map.has('age')); // true // 删除键值对 map.delete('age'); // 获取大小 console.log(map.size); // 2
Map的优势:
- 键可以是任意类型
- 保持插入顺序
- 有size属性
- 性能在频繁增删时更好
Set(集合)
Set是值的集合,每个值在Set中只能出现一次。
主要特性:
// 创建Set const set = new Set<number>(); // 添加值 set.add(1); set.add(2); set.add(2); // 重复值会被忽略 set.add(3); // 检查值是否存在 console.log(set.has(2)); // true // 删除值 set.delete(1); // 获取大小 console.log(set.size); // 2 // 遍历 set.forEach(value => console.log(value));
Set的优势:
- 自动去重
- 快速判断值是否存在
- 保持插入顺序
主要区别对比
特性 | Map | Set |
---|---|---|
存储内容 | 键值对 | 唯一值 |
重复处理 | 键唯一,值可重复 | 值唯一 |
主要用途 | 需要键值映射的场景 | 需要唯一值的集合 |
查找性能 | 通过键快速查找 | 通过值快速查找 |
典型方法 | set(), get(), has() | add(), has() |
使用场景示例
Map使用场景:
// 用户信息映射 const userMap = new Map<number, {name: string, email: string}>(); userMap.set(1, {name: 'Alice', email: 'alice@example.com'}); userMap.set(2, {name: 'Bob', email: 'bob@example.com'}); // 缓存数据 const cache = new Map<string, any>();
Set使用场景:
// 去重 const numbers = [1, 2, 2, 3, 3, 4]; const uniqueNumbers = new Set(numbers); // [1, 2, 3, 4] // 标签集合 const tags = new Set<string>(); tags.add('javascript'); tags.add('typescript'); tags.add('javascript'); // 不会被重复添加
两者都是TypeScript中非常有用的数据结构,根据具体需求选择使用。
到此这篇关于TypeScript中Map与Set的区别小结的文章就介绍到这了,更多相关TypeScript Map Set内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!