您现在的位置是:首页 > 技术教程 正文

TS — Map 对象, Map与字典的区别

admin 阅读: 2024-03-29
后台-插件-广告管理-内容页头部广告(手机)

(1)Map的基础操作

  1. //初始化Map的键和值,它们可以是任何类型,注意Map中所有的键或所有的值必须是相同类型
  2. let nameList = new Map([
  3. ["key1", 1],
  4. ["key2", 2]
  5. ])
  6. //通过map.set设置键值对,返回该Map对象
  7. nameList.set("key3", 3)
  8. console.log(nameList)
  9. //通过map.get获取键对应的值,如果不存在,则返回undefined
  10. var getmap = nameList.get("key2")
  11. var getmap2 = nameList.get("key999")
  12. console.log(getmap)
  13. console.log(getmap2)
  14. //通过map.delete()删除键值对,删除则返回true,未删除则返回false
  15. var deletemap = nameList.delete("key2")
  16. console.log(deletemap)
  17. console.log(nameList)
  18. //通过has()判断 Map中是否包含所查找的键值,返回布尔型
  19. var hasmap = nameList.has("key1")
  20. var hasmap2 = nameList.has("key999")
  21. console.log(hasmap)
  22. console.log(hasmap2)
  23. //通过clear()移除所有键值对,清楚Map
  24. var clearmap = nameList.clear()
  25. console.log(nameList)

(2)Map的迭代

Map的迭代有多种方式

1.使用for...of进行迭代,返回一个包含键值对的数组

  1. let myMap = new Map()
  2. myMap.set(0, "zero")
  3. myMap.set(1, "one")
  4. for (let [key, value] of myMap) {
  5. console.log(key, value)
  6. }

2.使用forEach进行迭代,它会接受一个回调函数作为参数

  1. let myMap = new Map()
  2. myMap.set(0, "zero")
  3. myMap.set(1, "one")
  4. myMap.forEach((value, key) => {
  5. console.log(key, value)
  6. })

3.使用 keys 方法迭代所有的键

  1. let myMap = new Map()
  2. myMap.set(0, "zero")
  3. myMap.set(1, "one")
  4. for (let key of myMap.keys()) {
  5. console.log(key)
  6. }

4.使用 values 方法迭代所有的值

  1. let myMap = new Map()
  2. myMap.set(0, "zero")
  3. myMap.set(1, "one")
  4. for (let value of myMap.values()) {
  5. console.log(value)
  6. }

需要注意的是,使用 for...of 或 forEach 迭代时,键值对的顺序与添加顺序一致;而使用 keys 或 values 迭代时,顺序与添加顺序无关。

(3)Map与字典的区别

在 TypeScript 中,Map 和字典(也叫关联数组或哈希表)都可以用来存储键值对。它们的主要区别在于内部实现方式和一些特性上。

Map 是 JavaScript 中的一个原生类,是一个可迭代的键值对的集合,其中每个键都是唯一的。它的键和值可以是任意类型的,可以通过 set 方法来添加新的键值对,通过 get 方法来获取值。Map 还有一些特殊的方法和属性,比如 size 属性,clear() 方法和 forEach() 方法等。在 TypeScript 中,我们可以直接使用 Map 类型来定义一个 Map 对象,例如:

  1. const map = new Map<string, number>();
  2. map.set('apple', 1);
  3. map.set('banana', 2);
  4. map.set('orange', 3);

字典(或关联数组或哈希表)则是一种常见的数据结构,也可以用来存储键值对,其中每个键也是唯一的。字典的实现方式一般是通过散列表(hash table)来实现的。在 TypeScript 中,我们通常会使用对象来模拟字典,例如:

  1. const dict = {
  2. apple: 1,
  3. banana: 2,
  4. orange: 3,
  5. };

字典虽然在实现上可能更高效,但是它不是一个原生的类,也缺乏 Map 的一些特殊方法和属性。因此在 TypeScript 中,如果需要使用到这些特殊的方法和属性,或者需要确保键的顺序等问题,建议使用 Map。如果只是简单的存储键值对,可以使用对象或者字典。

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索