• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

js的map数据结构

武飞扬头像
涛涛爱前端
帮助4

在 JavaScript 中,Map 是一种内置的数据结构,它可以存储任意类型的键和值,并且保持它们之间的关联。Map 对象是一组键值对的有序列表,其中键的范围不限于字符串,也可以是数字、布尔值、函数等其他类型。

Map 对象提供了以下方法:

  • set(key, value):向 Map 对象中添加一个键值对。
  • get(key):根据键获取对应的值,如果不存在该键,则返回 undefined。
  • has(key):判断 Map 对象中是否存在指定键。
  • delete(key):从 Map 对象中删除指定键值对。
  • clear():清空 Map 对象中的所有键值对。
  • size:获取 Map 对象中键值对的数量。
  • keys():获取 Map 对象中所有键组成的可迭代对象。
  • values():获取 Map 对象中所有值组成的可迭代对象。
  • entries():获取 Map 对象中所有键值对组成的可迭代对象。
const myMap = new Map();
myMap.set("key1", "value1");
myMap.set("key2", "value2");
console.log(myMap.get("key1")); // 输出:value1
console.log(myMap.has("key2")); // 输出:true
myMap.delete("key2");
console.log(myMap.has("key2")); // 输出:false
console.log(myMap.size); // 输出:1
console.log([...myMap.keys()]); // 输出:["key1"]
console.log([...myMap.values()]); // 输出:["value1"]
console.log([...myMap.entries()]); // 输出:[["key1", "value1"]]
myMap.clear();
console.log(myMap.size); // 输出:0

需要注意的是,Map 对象中的键值对是有序的,即它们按照插入顺序排列。

进阶一下:我们也可以自己定义对象模拟这个数据结构来实现基本的功能,具体实现如下:

class MyMap {
    constructor() {
        this.map = {};
    }
    set(key, value) {
        this.map[key] = value;
    }
    get(key) {
        return this.map[key];
    }
    has(key) {
        return this.map.hasOwnProperty(key);
    }
    delete(key) {
        if (this.has(key)) {
            delete this.map[key];
            return true;
        } else {
            return false;
        }
    }
    clear() {
        this.map = {};
    }
    size() {
        return Object.keys(this.map).length;
    }
    keys() {
        return Object.keys(this.map);
    }
    values() {
        return Object.values(this.map);
    }
    entries() {
        return Object.entries(this.map);
    }
}

在这个实现中,我们使用一个对象来存储键值对。

  1. set 方法将一个键值对添加到对象中,
  2. get 方法根据键获取值,
  3. has 方法判断是否存在某个键,
  4. delete 方法删除某个键值对,
  5. clear 方法清空所有键值对,
  6. size 方法获取键值对数量,
  7. keys 方法获取所有键,
  8. values 方法获取所有值,
  9. entries 方法获取所有键值对。

还需要注意的是:我们在开发中定义map数据结构时: 下面的写法会报错,报错信息如下: const map = new Map({ ^ TypeError: object is not iterable(对象不可迭代) (cannot read property Symbol(Symbol.iterator)) at new Map ()

//错误的写法
const map = new Map({
    I: 1,
    V: 5,
    X: 10,
    L: 50,
    C: 100,
    D: 500,
    M: 1000,
  });
    
//正确的写法
  const map = new Map([      ["I", 1],
      ["V", 5],
      ["X", 10],
      ["L", 50],
      ["C", 100],
      ["D", 500],
      ["M", 1000],
    ]);

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tangjefhi
系列文章
更多 icon
同类精品
更多 icon
继续加载