JavaScript Map相关知识介绍

9,005次阅读
没有评论

共计 1421 个字符,预计需要花费 4 分钟才能阅读完成。

JavaScript Map 是一种存储键值对的数据结构,它可以使用任何类型的值作为键或值。Map 对象可以记住键的插入顺序,也可以通过迭代器来遍历键值对。Map 对象有一些重要的方法和属性,下面介绍一些常用的。

创建 Map 对象

创建 Map 对象有两种方式:

  • 通过传递一个数组给 new Map() 构造函数,数组的每个元素都是一个键值对的数组,例如:
    // 创建一个 Map 对象
    const fruits = new Map([["apples", 500],
    ["bananas", 300],
    ["oranges", 200],
    ]);
  • 通过使用 set() 方法来添加键值对,例如:
// 创建一个空的 Map 对象
const fruits = new Map();


// 使用 set() 方法添加键值对
fruits.set("apples", 500);
fruits.set("bananas", 300);
fruits.set("oranges", 200);

set() 方法也可以用来修改已有的键值对,只需传入相同的键和新的值即可。

获取 Map 对象的大小和值

Map 对象有一个 size 属性,可以返回 Map 对象中键值对的数量,例如:

// 获取 Map 对象的大小
fruits.size; // 返回 3 

Map 对象有一个 get() 方法,可以根据键来获取对应的值,例如:

// 获取 Map 对象中某个键的值
fruits.get("apples"); // 返回 500

删除 Map 对象中的元素

Map 对象有一个 delete() 方法,可以根据键来删除对应的键值对,例如:

// 删除 Map 对象中某个键值对
fruits.delete("apples"); // 返回 true

delete() 方法会返回一个布尔值,表示是否删除成功。

Map 对象也有一个 clear() 方法,可以清空整个 Map 对象,例如:

// 清空 Map 对象
fruits.clear(); // 返回 undefined

判断 Map 对象中是否存在某个键

Map 对象有一个 has() 方法,可以根据键来判断 Map 对象中是否存在该键,例如:

// 判断 Map 对象中是否存在某个键
fruits.has("apples"); // 返回 true

has() 方法会返回一个布尔值,表示是否存在该键。

遍历 Map 对象

Map 对象可以通过 forEach() 方法来遍历所有的键值对,该方法接受一个回调函数作为参数,回调函数会在每个键值对上执行,并传入当前的值、键和整个 Map 对象作为参数,例如:

// 遍历 Map 对象
let text = "";
fruits.forEach(function (value, key) {text += key + "=" + value;});

Map 对象也可以通过 entries() 方法来返回一个包含所有键值对的迭代器对象,该迭代器对象可以用 for…of 循环来遍历,并得到每个键值对的数组,例如:

// 遍历 Map 对象
let text = "";
for (const x of fruits.entries()) {text += x;}

除了 entries() 方法外,还有 keys() 方法和 values() 方法,分别返回一个包含所有键或所有值的迭代器对象。

总结

JavaScript Map 是一种灵活而强大的数据结构,它可以使用任何类型的值作为键或值,并且保持了插入顺序。Map 对象提供了一些方便的方法和属性来操作和遍历键值对。如果你需要存储一些相关联的数据,并且需要快速地访问和修改,那么 Map 对象是一个不错的选择。

原文地址: JavaScript Map 相关知识介绍

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-09-20发表,共计1421字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)