了解一下JS中的映射方式

77 阅读1分钟

今天看文章的时候,偶然看到代码中的映射用的是Map,想想自己一直用的是对象做映射。所以就想深入了解一哈。

  1. Map:

    const map = new Map([["1", "planA"], ["2", "planB"], ["3", "planC"], ["4", "planB"]]);
    map.get("1"); // 返回 "planA"
    
    • 特点:

      • Map 是一种数据结构,用于存储键值对。
      • 键可以是任何数据类型,包括对象、函数等。
      • 保持键的顺序,并且每个键只能在 Map 中出现一次。
      • 提供了丰富的迭代方法,方便对键值对进行操作。
  2. 对象字面量 (obj):

    const obj = {
      "1": "planA",
      "2": "planB",
      "3": "planC",
      "4": "planD",
    };
    obj["1"]; // 返回 "planA"
    
    • 特点:

      • 对象是 JavaScript 中的一种基本数据类型,用于存储属性和方法。
      • 键只能是字符串或者可以被转换为字符串的值。
      • 不保持键的顺序。
      • 不提供直接的迭代方法,但可以通过循环遍历属性来实现类似的效果。

区别和选择:

  1. 键的类型: 如果键的类型需要是多样化的,而不仅仅是字符串,且需要保持键的顺序,那么选择 Map 更为合适。
  2. 顺序的保持: 如果需要确保键值对的顺序,Map 是更好的选择,因为它会按照插入的顺序保持键的顺序。
  3. 方法和灵活性: 如果需要更多的方法和灵活性来处理键值对,例如 size 属性、clear 方法、entries 方法等,那么 Map 是更为强大的数据结构。
  4. 简单性: 对于简单的键值对映射,如果只需要字符串作为键,对象字面量的语法更简单直观。

虽然ifelse跟switch也能做为一种方式来进行映射,但...