TypeScript Map

栏目: typescript 发布时间:2024-11-01

在 TypeScript 中,Map 是一种内置的对象类型,它允许你存储键值对,其中键和值可以是任意类型。与普通的 JavaScript 对象不同,Map 允许任何类型的值(对象或原始值)作为键。这使得 Map 在处理复杂数据结构时非常有用。

一、创建 Map

你可以使用 new Map() 来创建一个新的 Map 对象。

let myMap = new Map<string, number>();

在这个例子中,我们创建了一个键为字符串类型,值为数字类型的 Map。TypeScript 的类型注解是可选的,但提供它们可以帮助你在编译时捕获潜在的错误。

二、设置和获取值

你可以使用 set 方法来添加或更新 Map 中的键值对,使用 get 方法来获取值。

myMap.set('age', 30);
let age = myMap.get('age');
console.log(age); // 输出: 30

如果尝试获取一个不存在的键的值,Map 会返回 undefined

三、检查键是否存在

你可以使用 has 方法来检查 Map 中是否存在某个键。

let hasName = myMap.has('name');
console.log(hasName); // 输出: false

四、删除键值对

你可以使用 delete 方法来删除 Map 中的某个键值对。

myMap.delete('age');
let ageAfterDelete = myMap.get('age');
console.log(ageAfterDelete); // 输出: undefined

五、获取 Map 的大小

你可以使用 size 属性来获取 Map 中键值对的数量。

myMap.set('name', 'Alice');
console.log(myMap.size); // 输出: 1

六、遍历 Map

Map 提供了多种遍历方法,包括 forEachkeysvaluesentries

  • forEach 方法允许你对 Map 中的每个键值对执行一个函数。
myMap.forEach((value, key) => {
  console.log(`${key}: ${value}`);
});
// 输出: name: Alice
  • keys 方法返回一个迭代器,该迭代器按插入顺序包含了 Map 对象中每个键的值。
for (let key of myMap.keys()) {
  console.log(key);
}
// 输出: name
  • values 方法返回一个迭代器,该迭代器按插入顺序包含了 Map 对象中每个值。
for (let value of myMap.values()) {
  console.log(value);
}
// 输出: Alice
  • entries 方法返回一个迭代器,该迭代器按插入顺序包含了 Map 对象中每个元素的 [key, value] 对。
for (let [key, value] of myMap.entries()) {
  console.log(`${key}: ${value}`);
}
// 输出: name: Alice

七、清空 Map

你可以使用 clear 方法来清空 Map 中的所有键值对。

myMap.clear();
console.log(myMap.size); // 输出: 0

八、注意事项

  • Map 中的键是唯一的,如果有重复的键,则后面的值会覆盖前面的值。

  • 与普通的 JavaScript 对象不同,Map 保留了插入的顺序。

  • 当使用原始值(如字符串和数字)作为键时,Map 和对象的行为相似,但 Map 允许使用任何类型的值(包括对象)作为键,这是对象做不到的。

通过掌握这些 Map 相关的概念和技巧,你可以在 TypeScript 中更加高效地管理键值对数据,编写出更加健壮和易于维护的代码。

本文地址:https://www.tides.cn/p_typescript-map