2.Map和WeakMap用法

    // Map的key键名可以是各种类型的值

    let m = new Map([

        ["name", "王致和"],

        ["gender", 1]

    ])

    console.log(m);//Map(2) {'name' => '王致和', 'gender' => 1}

    // set()方法作用:给实例设置一对键值对,返回map实例。

    let ms = new Map()

    ms.set("name", "老干妈")

    ms.set(1, 2)

    console.log(ms);//Map(2) {'name' => '老干妈', 1 => 2}

    ms.set(null, 3)

    ms.set(undefined, 4)

    ms.set({}, 5)

    console.log(ms);//Map(5) {'name' => '老干妈', 1 => 2, null => 3, undefined => 4, {…} => 5}

    // 如果后面set的数据中有相同的属性,就会覆盖掉前面的

    ms.set("name", "王致和")

    console.log(ms);//Map(5) {'name' => '王致和', 1 => 2, null => 3, undefined => 4, {…} => 5}

    // get()方法作用:获取指定键名的键值,返回键值。

    console.log(ms.get("name"));//王致和

    console.log(ms.get(1));//2

    console.log(ms.get(null));//3

    // delete ( )方法作用:删除指定的键值对,删除成功返回:true,否则返回:false。

    ms.delete("name")

    console.log(ms);//Map(4) {1 => 2, null => 3, undefined => 4, {…} => 5}

    ms.delete(null)

    ms.delete(1)

    console.log(ms);//Map(2) {undefined => 4, {…} => 5}

    // 跟Set结构一样,Map结构也提供了clear()方法,让你一次性删除所有键值对。

    ms.clear()

    console.log(ms);//Map(0) {size: 0}

    // has()方法作用:判断Map实例内是否含有指定的键值对,有就返回:true,否则返回:false。

    console.log(m.has('name'));//true

    console.log(m.has(1));//false

    // entries()方法作用:返回实例的键值对遍历器。

    for (let [key, value] of m.entries()) {

        console.log(key + '' + value);//name王致和        gender1

    }

    // keys()方法:返回实例所有键名的遍历器。

    for (let key of m.keys()) {

        console.log(key);//name     gender

    }

    // values() 方法:返回实例所有键值的遍历器。

    for (let value of m.values()) {

        console.log(value);//王致和    1

    }

    // forEach遍历每一个键值对:

    m.forEach(function (value, key) {

        console.log(key + ':' + value);//name:王致和       gender:1

    })

    // size:获取实例的成员数。

    console.log(m.size);//2

    // WeakMap结构和Map结构很类似,不同点在于WeakMap结构的键名只支持引用类型的数据。哪些是引用类型的值呢?比如:数组,对象,函数。

    let mx = new WeakMap()

    mx.set([1], 2)

    mx.set({ 'name': 'zhangsan' }, 2)

    function fn(){ }

    mx.set(fn, 2)

    console.log(mx);//WeakMap {ƒ => 2, Array(1) => 2, {…} => 2}

    // WeakMap如果是普通的值类型则不允许。比如:字符串,数字,null,undefined,布尔类型。而Map结构是允许的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/25185.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

全面解析Linux指令和权限管理

目录 一.指令再讲解1.时间相关的指令2.find等搜索指令与grep指令3.打包和压缩相关的指令4.一些其他指令与热键二.Linux权限1.Linux的权限管理2.文件类型与权限设置3.目录的权限与粘滞位 一.指令再讲解 1.时间相关的指令 date指令: date 用法:date [OPTION]… [FOR…

如何在Linux中更改SSH端口?

SSH(Secure Shell)是一种安全的远程登录协议,它允许您通过网络远程连接到Linux系统并进行管理操作。默认情况下,SSH使用22端口进行通信。然而,为了增强系统的安全性,有时候我们需要更改SSH端口,…

linux 找回root密码(CentOS7.6)

linux 找回root密码(CentOS7.6) 首先,启动系统,进入开机界面,在界面中按“e”进入编辑界面。如图 2. 进入编辑界面,使用键盘上的上下键把光标往下移动,找到以““Linux16”开头内容所在的行数”,在行的最后…

C4D R26 渲染学习笔记 建模篇(2):手动建模

文章目录 前文回顾介绍篇建模篇 手动建模建模快捷键手动模型快捷键大全常用操作N系快捷键K系快捷键U系快捷键 结尾 前文回顾 介绍篇 C4D R26 渲染学习笔记(1):C4D版本选择和初始UI框介绍 C4D R26 渲染学习笔记(2)&am…

Dubbo高可用

1.zookeeper宕机与dubbo直连 1.1.现象:zookeeper注册中心宕机,还可以消费dubbo暴露的服务。 原因: 监控中心宕掉不影响使用,只是丢失部分采样数据数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但…

软考A计划-试题模拟含答案解析-卷十二

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

AB Test数学原理及金融风控应用

1 什么是AB Test AB测试是一种常用的实验设计方法,用于比较两个或多个不同处理或策略的效果,以确定哪个处理或策略在某个指标上表现更好。在AB测试中,将随机选择一部分用户或样本,将其分为两个或多个组,每个组应用不同…

Java: IO流

1.定义 IO流:存储和读取数据的解决方案 用于读写文件中的数据(可以读写文件,或网络中的数据...) 2.IO流的分类 1.按着流的方向 1.输入流:读取 2.输出流:写出 2.按照操作文件类型 1.字节流:所有类型文件 体系&…

机器学习-5 朴素贝叶斯算法

朴素贝叶斯算法 算法概述数理统计学处理的信息古典学派和贝叶斯学派的争论贝叶斯定理朴素贝叶斯分类训练朴素贝叶斯:朴素假设案例:预测打网球拉普拉斯平滑技术小结 算法流程与步骤算法应用sklearn中的朴素贝叶斯朴素贝叶斯的使用算法实例 算法概述 数理…

【服务器】使用Nodejs搭建HTTP web服务器

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 前言 1.安装Node.js环境 2.创建node.js服务 3. 访问node.js 服务 4.内网穿透 4.1 安装配置cpolar内网穿透 4.2 创建隧道映射本地端口 5.固定公网地址 [TOC] 转载自内网穿透…

一个完整的APP定制开发流程是怎样的?

随着移动互联网的发展,越来越多的 APP应用软件进入人们的生活,让我们的生活更便捷、更舒适。而随着互联网技术的进步,移动互联网应用软件开发行业也越来越成熟,为了适应市场需求,各种功能强大、性能良好的 APP应用软件…

C/C++ ---- 内存管理

目录 C/C内存分布 常见区域介绍 经典习题(读代码回答问题) 选择题 填空题 C语言内存管理方式 malloc/free calloc realloc C内存管理方式 new和delete操作内置类型 new和delete操作自定义类型 operator new和operator delete函数 new和dele…

C++11常用的一部分新特性

C11 统一的列表初始化{}初始化std::initializer_list 声明autodecltypenullptr STL中一些变化新容器已有容器的新接口 右值引用和移动语义左值引用和右值引用右值引用使用场景和意义右值引用引用左值及其一些更深入的使用场景分析完美转发 新的类功能默认…

opencv_c++学习(二十四)

一、积分图像 积分图像是对原图像进行积分操作的算法。如上图左所示,不同颜色代表不同区域。当我们想求取一个像素点的积分值时,我们需要求取该点左上方区域的数据之和,如P0的积分值是浅蓝色区域的数据之和。 P1的积分值为蓝色和橙色区域的数…

网页JS自动化脚本(八)使用网页专属数据库indexedDB进行数据收集

我们在网页上进行的活动,往往都需要进行收集一些简单的数据,但是因为浏览器的安全原因,浏览器基本上是无法与本地的操作系统直接产生数据交互的,这本来就是一个由于安全问题生产的无解问题,在浏览器里面是内置了几种数据库的,其中一种就是indexedDB,可以用来储存一些非常小的数…

C++进阶 —— 线程库(C++11新特性)

十,线程库 thread类的简单介绍 在C11之前涉及多线程问题,都是和平台相关的,如windows和Linux下各有自己的接口,这使代码的可移植性较差;C11中最重要的特性就是对线程进行支持,使得C在并行编程时不需要依赖…

Axure教程—水平方向多色图(中继器)

本文将教大家如何用AXURE制作动态水平方向多色图 一、效果介绍 如图: 预览地址:https://l83ucp.axshare.com 下载地址:https://download.csdn.net/download/weixin_43516258/87822666 二、功能介绍 简单填写中继器内容即可生成动态水平多色…

Linux-模拟一个简单的shell

什么是shell外壳?就是操作系统给我们的一个命令行解释器,在Linux系统中,它的shell叫做bash。 那么bash本质是什么呢? 本质就是一个文件,一个进程。 万物皆文件 每个操作系统的shell都是很复杂的,想要…

【Matter】使用chip tool在ESP32-C3上进行matter开发

文章目录 使用chip tool在ESP32-C3上进行matter开发前提准备编译 chip-tool1.激活esp-matter环境2.编译matter所需环境3.构建CHIP TOOL chip-tool client 调试设备说明1.基于 BLE 调试2.通过IP与设备配对3.Trust store4.忘记当前委托的设备 使用chip-tool点灯1.matter环境激活2…

linuxOPS基础_Linux系统的文件目录结构及用途

linux系统文件目录结构 Linux 系统不同于 Windows,没有 C 盘、D 盘、E 盘那么多的盘符,只有一个根目录(/),所有的文件(资源)都存储在以根目录(/)为树根的树形目录结构中…