ES6内置对象 - Map

Map(Map对象保存键值对,键值均不限制类型)

特点:

  • 有序(Set集合是无序的);
  • 键值对(键可以是任意类型);
  • 键名不能重复(如果重复,则覆盖)
1、创建Map对象(.set & .get获取其值)
// 如下图
let m = new Map();// 键值对(键可以是任意类型)
let m2 = new Map([[1,'a'],['2',1],['b',new Set('123')]]);// 键名不能重复(如果重复,则覆盖)
let m3 = new Map([[1,'a'],['2',1],['b',new Set('123')],['2',44]]);// 注:还可以set来创建 添加 重置Map对象,然后通过get获取
m3.set('c',undefined);
console.log(m3); // Map(4) {1 => 'a', '2' => 44, 'b' => Set(3), 'c' => undefined}m3.get(1);
console.log(m3); // 'a'

Map和Object的区别:

  • JavaScript 的对象(Object)本质上是键值对的集合(Hash 结构),但是传统上 Object 的键只能是字符串或者 Symbols(我尝试用number类型也是可以做键值的,但是不能 . 获取,只能 [] 取值),这给它的使用带来了很大的限制。而Map对象的键可以是任意类型元素(基本类型、引用类型或者函数等等),是一组一组的key valued 的值;
  • Map 中的键值是有序的(FIFO 原则),而添加到对象中的键则不是;
  • Map 的键值对个数可以从 size 属性获取,而 Object 的键值对个数是length属性获取。
  • Object 都有自己的原型,原型链上的键名有可能和在对象上的设置的键名产生冲突。
2、Map对象清空
//m2 为 new Map([[1,'a'],['2',1],['b',new Set('123')]]);
m2.clear();
 3、Map对象删除(.delete(key))
let m2 = new Map([[1,'a'],['2',1],['b',new Set('123')]]);
m2.delete('2');
console.log(m2); //Map(2) {1 => 'a', 'b' => Set(3)}
 4、Map对象个数、键集合、值集合 、has()
let m = new Map([[1,'a'],['2',1],['b',new Set('123')]]);//个数
m.size;  //3//键集合
m.keys(); // MapIterator {1, '2', 'b'}//值集合
m.values(); // MapIterator {'a', 1, Set(3)}//注:Set 的 has 方法用于查找值;Map 的 has 方法用于查找键名
m.has(1) // true
5、Map对象迭代
let m = new Map([[1,'a'],['2',1],['b',new Set('123')]]);m.forEach((val,key)=>{ console.log(key +','+val); 
})或者for (var [key, value] of m) {console.log(key + " , " + value);
}抑或 for (var [key, value] of m.entries()) {console.log(key + " , " + value);
}// 打印:1,'a'
//       2,1
//       b,[object Set]

如下图及前文,可以看出.key(),.values(),.entries()等方法返回是迭代器对象 ,可以使用 for of遍历。迭代器接口本质就是调用迭代器对象的next方法,指针会依次指向内部成员。(迭代器之后再详细介绍。。。)

6、其他
let m = new Map([[1,'a'],['2',1],['b',new Set('123')]]);let m1 = m; // m1浅拷贝,没有重新分配空间,只是索引指向同一处,所以 ===
let m2 = new Map(m); // m2是深拷贝,在内存里新开辟了一个空间去存相同的值,不===//Map对象解构出来是存储键值对的二维数组 ,可以利用其合并Map集合等
//与Set一样,也可用Array.from 函数
let m3 = [...m]; 
// (3) [Array(2), Array(2), Array(2)]  
// [[1,'a'],['2',1],['b',new Set('123')]]

欢迎互相学习查漏补缺呀~

参考:

ES6内置对象的新方法新特性

ES6--内置对象(Map与Set、字符串、数值、对象、数组)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c编译器学习07:minilisp编译器改造(debug模式支持调试)

问题 原版的minilisp编译器不支持argv输入测试,不方便单步调试。 代码改造目标是既不改变原有程序的各种功能, 又能支持个人习惯的vs单步debug模式。 CMakeLists.txt变更 定义DEBUG宏 解决单步调试源码定位偏差问题 cmake_minimum_required(VERSION …

高级语言期末2012级B卷

1.编写函数&#xff0c;输出任意正整数n的位数&#xff08;n默认为存储十进制的整形变量&#xff09; 例如&#xff1a;正整数13&#xff0c;则输出2,&#xff1b;正整数3088&#xff0c;则输出4 #include <stdio.h>int func(int n) {int count0;while(n>0) {n/10;co…

免费的WP模板网站推荐

免费wordpress模板下载 高端大气上档次的免费wordpress主题&#xff0c;首页大图全屏显示经典风格的wordpress主题。 https://www.wpniu.com/themes/289.html wordpress免费企业主题 深蓝色经典实用的wordpress网站模板&#xff0c;用wordpress免费企业主题搭建网站。 http…

基于springboot+vue的安康旅游网站(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

Day17_集合与数据结构(链表,栈和队列,Map,Collections工具类,二叉树,哈希表)

文章目录 Day17 集合与数据结构学习目标1 数据结构2 动态数组2.1 动态数组的特点2.2 自定义动态数组2.3 ArrayList与Vector的区别&#xff1f;2.4 ArrayList部分源码分析1、JDK1.6构造器2、JDK1.7构造器3、JDK1.8构造器4、添加与扩容5、删除元素6、get/set元素7、查询元素8、迭…

java基础-正则表达式+文件操作+内置包装类

目录 正则表达式去除字符串前后空格&#xff1a;去除每一行中首尾的空格去除开头的 数字_ 文件操作打印当前项目路径获取文件的上级目录/和\读取文件 内置包装类System类常用方法 Number类Integer类常用方法Float和Double 正则表达式 去除字符串前后空格&#xff1a; str.tri…

创建天花——Dynamo for Revit2022

今天我们来聊一个期待已久的功能——生成天花&#xff0c;经过了这么多年的迭代&#xff0c;Revit终于开放了生成天花的API&#xff0c;而且功能还不错&#xff0c;是经过优化的&#xff0c;不过目前我手里还没拿到SDK&#xff0c;就不截图了。 而且新增的天花API不是在Docume…

axios是如何实现的(源码解析)

1 axios的实例与请求流程 在阅读源码之前&#xff0c;先大概了解一下axios实例的属性和请求整体流程&#xff0c;带着这些概念&#xff0c;阅读源码可以轻松不少&#xff01; 下图是axios实例属性的简图。 可以看到axios的实例上&#xff0c;其实主要就这三个东西&#xff1a…

Sora是什么?

文章目录 前言Sora是什么&#xff1f;功能特色优点 缺点Sora模型的工作原理如何使用Sora模型Sora模型的应用场景Sora模型带来的问题虚假信息版权问题 后记 前言 Sora是美国人工智能研究公司OpenAI发布的一款令人惊叹的人工智能文生成视频大模型。近年来&#xff0c;人工智能技…

无人机基础技术,固定翼无人机动力系统技术详解,无人机飞行控制系统技术

推重比选择 推重比&#xff0c;是指无人机发动机推力/拉力与无人机飞行重力之比。该参数是衡量动力系统乃至整机性能的重要参数&#xff0c;很大程度上影响飞行性能。固定翼无人机的动力系统在配置时选择的推重比必须达到或超出设计的推重比。 重量要求 翼载荷是无人机单位面…

07 STL 简介

目录 什么是STLSTL的版本STL的六大组件STL的重要性如何学习STLSTL的缺陷 1. 什么是STL c标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且是一个包罗数据结构和算法的软件框架 2. STL的版本 原始版本 Alexander Stepanov、Meng Lee在惠普实验室的…

java: warning: source release 11 requires target release 11 解决办法

遇到问题 运行项目时报如下错 java: warning: source release 11 requires target release 11 原因&#xff1a;创建项目的时候选择的java11版本&#xff0c;现在用java8版本运行就会报这个错 查看项目的iml文件中LANGUAGE_LEVEL“JDK_xx”是多少 .iml 文件是 IntelliJ ID…

代码随想录算法训练营第四十一天|416. 分割等和子集。

416. 分割等和子集 题目链接&#xff1a;分割等和子集 题目描述&#xff1a; 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 解题思路&#xff1a; 本题直接套用0-1背包问题确定以下四点 1、背包…

如何将建筑白模叠加到三维地球上?

​ 通过以下方法可以将建筑白模叠加到三维地球上。 方法/步骤 下载三维地图浏览器 http://www.geosaas.com/download/map3dbrowser.exe&#xff0c;安装完成后桌面上出现”三维地图浏览器“图标。 2、双击桌面图标打开”三维地图浏览器“ 3、点击“建筑白模”菜单&…

欢迎 Gemma: Google 最新推出开源大语言模型

今天&#xff0c;Google 发布了一系列最新的开放式大型语言模型 —— Gemma&#xff01;Google 正在加强其对开源人工智能的支持&#xff0c;我们也非常有幸能够帮助全力支持这次发布&#xff0c;并与 Hugging Face 生态完美集成。 Gemma 提供两种规模的模型&#xff1a;7B 参数…

浅拷贝导致的bug

错误代码&#xff1a; //初始化formTableData的值 const formTableData ref({saleOrderTime:,saleOrderDetails:[] });const showModal async (item) > {//调接口获取后端返回的数据let data (await api.searchSaleOrderById({saleOrderId:item.id})).dataconsole.log(&…

全流程点云机器学习(一)使用CloudCompare自制sharpNet数据集

前言 这不是高支模项目需要嘛&#xff0c;他们用传统算法切那个横杆竖杆流程复杂耗时很长&#xff0c;所以想能不能用机器学习完成这些工作&#xff0c;所以我就来整这个工作了。 工欲善其事&#xff0c;必先利其器&#xff0c;在正式开始之前&#xff0c;我们先要搞懂如何切…

旅游分享系列之:福建旅游攻略

旅游分享系列之&#xff1a;福建旅游攻略 一、漳州1.福建土楼2.云水谣3.四菜一汤景点 二、厦门1.园林博览苑2.海上自行车道3.山海步道4.海滩5.闽南菜6.落日 三、泉州1.衙口沙滩2.海上日出3.珞珈寺4.海滩烟花 一、漳州 游玩2个景点&#xff1a;云水谣&#xff0c;四菜一汤可以住…

基于Java+SpringBoot+Vue前后端分离仓库管理系统设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

QT常用类

五、常用类 QString 字符串类&#xff08;掌握&#xff09; QString是Qt的字符串类&#xff0c;与C的std::string相比&#xff0c; 不再使用ASCII编码。QString使用的是Unicode编码。 QString中每个字符都是一个16位的QChar&#xff0c;而不是8位的char。 QString完全支持中文&…