Javascript Map 对象使用说明

2023-05-16

Map 是 ES6 中引入的一种新的数据结构,对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。以前用的JS对象 Object也是可以把其属性看作键来定位数据,但 Map 和 Object 是有区别的。

Map 和 Object 区别

比较项

Object

Map

键的范围

键只能是字符串或者 Symbols

可以是任意值,包括对象与函数

键的顺序

键(属性)是无序的

键值是有序的(FIFO 原则)

键值统计

键值对个数只能手动计算

键值对个数可以从 size 属性获取

键名冲突

原型链上的键名有可能和你自己在对象上的设置的键名产生冲突

不会冲突

创建 Map

使用 Map 类型和 new 关键字来创建 Map;初始化 Map,可以以数组的格式来传入键值对。

// 使用new
let myMap = new Map();

// 使用数组来初始化
let myMap = new Map([
        ["key1", "value1"],
        ["key2", "value2"]
    ]); 

Map 相关的属性与方法

名称

意义

clear()

移除 Map 对象的所有键/值对

set()

设置键值对,返回该 Map 对象

get()

返回键对应的值,如果不存在,则返回 undefined

has()

返回一个布尔值,用于判断 Map 中是否包含键对应的值

delete()

删除 Map 中的元素,删除成功返回 true,失败返回 false

size

注意,这个是属性,返回 Map 对象键/值对的数量

keys()

返回一个 Iterator 对象, 包含了 Map 对象中每个元素的键

values()

返回一个新的Iterator对象,包含了Map对象中每个元素的值

示例

let nameSiteMapping = new Map();
 
// 设置 Map 对象
nameSiteMapping.set("Google", 1);
nameSiteMapping.set("Runoob", 2);
nameSiteMapping.set("Taobao", 3);
 
// 获取键对应的值
console.log(nameSiteMapping.get("Runoob"));     // 2
 
// 判断 Map 中是否包含键对应的值
console.log(nameSiteMapping.has("Taobao"));       // true
console.log(nameSiteMapping.has("Zhihu"));        // false
 
// 返回 Map 对象键/值对的数量
console.log(nameSiteMapping.size);                // 3
 
// 删除 Runoob
console.log(nameSiteMapping.delete("Runoob"));    // true
console.log(nameSiteMapping);
// 移除 Map 对象的所有键/值对
nameSiteMapping.clear();             // 清除 Map
console.log(nameSiteMapping);
// 迭代
let nameSiteMapping = new Map();
 
nameSiteMapping.set("Google", 1);
nameSiteMapping.set("Runoob", 2);
nameSiteMapping.set("Taobao", 3);
 
// 迭代 Map 中的 key
for (let key of nameSiteMapping.keys()) {
    console.log(key);                  
}
 
// 迭代 Map 中的 value
for (let value of nameSiteMapping.values()) {
    console.log(value);                 
}
 
// 迭代 Map 中的 key => value
for (let entry of nameSiteMapping.entries()) {
    console.log(entry[0], entry[1]);   
}
 
// 使用对象解析
for (let [key, value] of nameSiteMapping) {
    console.log(key, value);            
}

forEach

var myMap = new Map();
myMap.set(0, "zero");
myMap.set(1, "one");
 
// 将会显示两个 logs。 一个是 "0 = zero" 另一个是 "1 = one"
myMap.forEach(function(value, key) {
  console.log(key + " = " + value);
}, myMap)

Map 与 Array的转换

var kvArray = [["key1", "value1"], ["key2", "value2"]];
 
// Map 构造函数可以将一个 二维 键值对数组转换成一个 Map 对象
var myMap = new Map(kvArray);
 
// 使用 Array.from 函数可以将一个 Map 对象转换成一个二维键值对数组
var outArray = Array.from(myMap);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript Map 对象使用说明 的相关文章

随机推荐

  • Ubuntu下wifi适配器、蓝牙找不到

    方法 xff1a 1 xff09 在windows系统下安装wifi驱动 xff0c 蓝牙驱动等 xff1b 2 xff09 关机 xff0c 不是重启 xff01 然后再次手动开机 3 xff09 在ubuntu中查看wifi 蓝牙的开关
  • Linux与gitee的连接

    当我们在Linux系统下完成代码后 xff0c 希望能跟在windows操作下一样 xff0c 将在编译器上写好的代码传送到远端 xff08 gitee xff09 上 这也不难 只需要按以下步骤即可完成 第一 xff1a 先在gitee上
  • STM32F103C8T6点亮LED灯(流水灯)(IO口的初始复用功能)

    xff08 1 xff09 序言 刚开始学 STM32 xff0c 当然是点亮LED灯了 xff0c 从arm中的 hello word 开始着手 软件安装 xff0c 硬件连接 xff0c 前面文章已经有讲 xff0c 这里不再多说 xf
  • 在不ROOT的条件下通过WIFI调试android程序

    1 通过USB连接设备 xff0c 确保调试运行正常 2 运行 adb tcpip 5555 3 运行adb connect lt devices ip gt 5555 4 断开USB连接 xff0c 查看是否能正常调试 5 如需要再次利用
  • Oracle 11g单实例使用ASM注意事项

    1 etc hosts文件一定要写正确 A 确保127 0 0 1对应的仅仅是localhost等 xff0c 不能对应主机名 B 一定要把本机ip地址以及对应的主机名称加到下面行里 2 配置ASM最后执行第二个root脚本时 xff0c
  • Win32 SDK开发中对话框控件消息处理

    LRESULT CALLBACK WndProc HWND hWnd UINT message WPARAM wParam LPARAM lParam switch message HANDLE MSG hWnd WM CREATE OnC
  • win32 SDK开发中打开 保存文件对话框的使用

    示例程序如下 TCHAR strFileName MAX PATH 61 T 34 34 TCHAR strPath MAX PATH 61 T 34 34 OPENFILENAME ofn 61 sizeof OPENFILENAME N
  • static 修饰的全局变量具有内部链接的一个例子

    很久不能明白这个事情 xff0c 下面自己来举个例子吧 xff1a 文件1 c include lt stdio h gt extern int s int main printf 34 d n 34 s return 0 文件2 c in
  • CentOS6 虚拟机管理工具 virt-manager 在Xmanager键位混乱问题

    平时一直在Linux下面管理虚拟机 xff0c 没有啥问题 xff0c 今天由于工作需要 xff0c 在Xmanager中进行虚拟机管理 xff0c 发现virt manager管理工具中虚拟机控制台登录键盘映射错乱 xff0c 经研究发现
  • 在Jdeveloper 11gR2中传递url参数到由task flow构成的区中

    1 建立环境 新建fusion web application gt PassVar 在默认任务流 adf config xml里面创建view welcome和相应的jsf页面 新建bounded任务流passVar xml 在任务栏中添
  • Oracle ADF控件屏幕居中

    在某些情况下 xff0c 比如登录窗口 xff0c 我们希望能位于屏幕正中央 在ADF中通过下面步骤实现 1 新建fusion web application gt CenterItem 在默认任务流 adf config xml里面创建v
  • 顺序表的创建与使用

    顺序表的创建与使用 这里还定义了一个数据类型的宏 xff0c TYPE 首先需要设计数据结构 xff0c 这里设计了两个成员 xff1a 数组首地址和元素个数 然后是进行各种业务功能的分函数 xff1a 创建顺序表 销毁顺序表 访问顺序表中
  • 顺序栈的创建与使用

    顺序栈的创建与使用 首先是各种函数的头文件声明 这里还另外定义了一个数据类型的宏 xff0c int类型数据暂时用作TYPE替换 xff0c 也可以替换成其他类型数据 然后是设计数据结构体 xff0c 这里定义了三个成员变量 其次是实现各项
  • 利用C++模板封装链表

    利用C 43 43 实现链表模板类 include lt iostream gt include lt stdlib h gt using namespace std template lt typename T gt class Node
  • 利用套接字创建本地socket文件完成本地进程间通信

    利用套接字创建socket文件完成本地两个进程之间的通信 xff0c 这里分为进程A和进程B 进程A 头文件 进程A里面首先是各种头文件 xff1a 1 include lt stdio h gt 2 include lt stdlib h
  • C++在字符串中搜索特定的字符

    C 43 43 在字符串中搜索特定的字符 在字符串中搜索特定字符是指在字符串中寻找是否存在指定的字符或字符集 include lt iostream gt int main int argc const char argv std stri
  • C++中在字符串中提取子字符串

    C 43 43 中在字符串中提取子字符串 从字符串中提取子字符串是指将一个字符串中的一部分截取下来形成一个新的字符串 include lt iostream gt int main int argc const char argv std
  • C++中如何访问字符串中的单个字符

    访问字符串中的单个字符 访问字符串中的单个字符是像字符数组那样使用下标访问字符串中的某个元素 include lt iostream gt int main int argc const char argv std string str1
  • c中有时候一个名字具有块作用域但是有外部链接的一个例子

    文件1 c include lt stdio h gt void f void s具有块作用域 xff0c 但是具有外部链接 extern int s printf 34 d n 34 s int main f return 0 文件2 c
  • Javascript Map 对象使用说明

    Map 是 ES6 中引入的一种新的数据结构 xff0c 对象保存键值对 任何值 对象或者原始值 都可以作为一个键或一个值 以前用的JS对象 Object也是可以把其属性看作键来定位数据 xff0c 但 Map 和 Object 是有区别的