JavaScript中的Map数据结构详解

JavaScript中的Map数据结构详解

什么是Map数据结构

Map是JavaScript中一种新的数据结构,类似于对象,但是比对象更加灵活。Map可以将任意类型的值作为键名(包括对象、字符串、数字、布尔值等),并且不会将键名强制转换为字符串。Map的键值对个数没有限制,可以根据需要动态地增加或者删除键值对。Map内部实现了一个哈希表,因此增加、删除、查找键值对的速度都非常快。

Map的基本用法

创建Map对象

let map = new Map();

设置键值对

可以使用下面的方法向Map对象中添加键值对:

let key1 = 'key1';
let val1 = 'value1';
map.set(key1, val1);

获取值

通过键名获取对应的键值:

map.get(key1); // 'value1'

删除键值对

可以使用下面的方法删除键值对:

map.delete(key1);

判断是否包含键名

使用has方法判断是否包含一个键名:

map.has(key1); // false

获取Map中所有键名

使用keys方法获取Map中所有键名:

map.keys(); // ['key2', 'key3']

获取Map中所有键值

使用values方法获取Map中所有键值:

map.values(); //[ 'value2', 'value3' ]

获取Map中所有键值对

可以使用以下代码获取Map中所有键值对:

map.entries(); // [ [ 'key2', 'value2' ], [ 'key3', 'value3' ] ]

遍历Map

可以通过以下方式来遍历Map:

1.使用for...of循环:

for (let [key, value] of map) {
  console.log(key + ' = ' + value);
}

2.使用forEach方法:

map.forEach(function(value, key) {
  console.log(key + ' = ' + value);
});

示例说明

示例1:统计字符串中每个字符出现的次数

可以使用Map来统计字符串中每个字符出现的次数,具体过程如下:

let str = 'abbccdd';
let map = new Map();
for(let i=0; i<str.length; i++){
  let char = str.charAt(i);
  if(map.has(char)){
    map.set(char, map.get(char)+1);
  }else{
    map.set(char, 1)
  }
}
console.log(map); // Map { 'a' => 1, 'b' => 2, 'c' => 2, 'd' => 2 }

示例2:存储函数返回结果

可以使用Map来存储某个函数返回结果,避免重复调用此函数,具体代码如下:

let map = new Map();

function getResult(key){
  if(map.has(key)){
    return map.get(key);
  }else{
    let result = //some time-consuming code here
    map.set(key, result);
    return result;
  }
}

这样,下次再调用getResult函数时,如果已经存储了key对应的结果,则直接从Map中获取结果,避免了重复计算。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript中的Map数据结构详解 - Python技术站

(0)
上一篇 2023年5月17日
下一篇 2023年5月17日

相关文章

  • java数据结构基础:线性表

    Java数据结构基础:线性表 简介 线性表是指数据元素之间存在线性关系的数据结构,即数据元素之间有前后直接关系,且第一个元素没有前驱,最后一个元素没有后继。线性表可以用数组或者链表两种方式实现。 数组实现线性表 线性表的数组实现即为将线性表中的元素放在一个一维数组中,使用数组下标表示元素的位置。由于数组随机访问元素的时间复杂度为O(1),因此在随机访问比较多…

    数据结构 2023年5月17日
    00
  • Python数据结构之链表详解

    Python数据结构之链表详解 链表简介 链表是一种数据结构,其每个节点都包含一个指向下一个节点的指针。链表可以用来表示序列,集合或映射等数据结构。在Python中,链表通常由节点和链表类来实现。 单向链表 单向链表是一种链表,每个节点包含指向下一个节点的指针。在Python中,一个节点可以由一个简单的对象表示,而整个链表必须由相互链接的节点组成。 下面是一…

    数据结构 2023年5月17日
    00
  • C语言数据结构之单链表的查找和建立

    C语言数据结构之单链表的查找和建立 什么是单链表? 单链表是一种常见的数据结构,是由若干个节点(Node)组成的链式结构,每个节点存储着链表中的元素和指向下一个节点的指针。 单链表的优点是插入、删除元素简单,但是查找元素比较困难。 在C语言中,我们可以使用结构体来定义一个节点: struct ListNode { int val; struct ListNo…

    数据结构 2023年5月17日
    00
  • Go select使用与底层原理讲解

    标题:Go select使用与底层原理讲解 标准库提供的go语言引擎的选择器select语法是并发编程中常用的语法之一,它允许协程同时等待多个IO操作的完成,通常会和通道配合使用。在本文中,我们将详细讲解Go select的使用和底层原理。 Go select的使用 基本语法 在Go语言中,select语法的基本语法如下: select { case &lt…

    数据结构 2023年5月17日
    00
  • C++数据结构与算法的基础知识和经典算法汇总

    C++数据结构与算法的基础知识和经典算法汇总 1. 基础知识 1.1 数据结构 数据结构是计算机存储、组织数据的方式。这里列出常见的数据结构,包括但不限于: 数组 链表 栈 队列 树 哈希表 1.2 算法 算法是解决问题的步骤和方法。下列是常见的算法: 排序算法 查找算法 字符串算法 图算法 1.3 复杂度 复杂度是算法性能的度量。常见的复杂度表示法有O(n…

    数据结构 2023年5月17日
    00
  • [Week 19]每日一题(C++,数学,并查集,动态规划)

    目录 [Daimayuan] T1 倒数第n个字符串(C++,进制) 输入格式 输出格式 样例输入 样例输出 解题思路 [Daimayuan] T2 排队(C++,并查集) 输入格式 输出格式 样例输入1 样例输出1 样例输入2 样例输出2 样例输入3 样例输出3 数据规模 解题思路 [Daimayuan] T3 素数之欢(C++,BFS) 数据规模 输入格…

    算法与数据结构 2023年5月4日
    00
  • Mysql Innodb存储引擎之索引与算法

    Mysql Innodb存储引擎之索引与算法 MySQL是一款非常受欢迎的关系型数据库,有许多的存储引擎可供选择,其中InnoDB是目前最受欢迎的存储引擎之一。索引是InnoDB存储引擎的一个重要特性,它可以大大提高数据库查询的效率。本文将详细讲解InnoDB存储引擎的索引与算法。 索引 索引是一种数据结构,它将表中的列与对应的行位置组成键值对,以便快速查找…

    数据结构 2023年5月17日
    00
  • Java数据结构之常见排序算法(下)

    Java数据结构之常见排序算法(下) 前言 这是 Java 数据结构之常见排序算法的第二篇,本篇文章将继续介绍常见的排序算法。对于尚未了解基本排序算法的读者,可以先阅读 Java 数据结构之常见排序算法(上)。 快速排序 快速排序是一种使用分治思想的排序算法,其思路是将一个数组分为两个子数组,再对子数组进行排序,这个过程不断递归执行。在具体实现时,选择一个元…

    数据结构 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部