JS中Map对象与object的区别

若想了解Map对象可以阅读本人这篇ES6初步了解Map
Map对象与object有什么区别?让我为大家介绍一下吧!

共同点

二者都是以key-value的形式对数据进行存储

		const obj = {name:"zs",age:18}console.log(obj)let m = new Map()m.set("name","zs")m.set("age",18)console.log(m)

在这里插入图片描述

不同点

1.key的数据类型范围不同,obj可以作为key的仅有number、string、symbol,map均可以

		const obj = {name:"zs",age:18,[Symbol("11")]:"22"}console.log(obj)let m = new Map()m.set("name","zs")m.set("age",18)m.set(Symbol("11"),22)m.set([1,2,3],33)m.set({},33)console.log(m)

在这里插入图片描述
2.key的顺序不同,obj通过obj.keys()打印出来的属性顺序是 number–字符串,map的key顺序是声明顺序。
在这里插入图片描述

在这里插入图片描述
3.创建方式不同。obj有三种创建方式 字面量{}、new Object() 、构造函数。map仅支持new Map()
obj的创建方式:

        const obj = {name:"zs",age:18}console.log(obj)// 2.new Objectlet obj1 = new Object()console.log(obj1)// 3.构造函数function Person(name,age){this.name = namethis.age = age}let obj2 = new Person("zs",18)console.log(obj2)

在这里插入图片描述
Map对象的创建方式:

let m = new Map()

在这里插入图片描述
4. key的调用不同。 map只能用原生的get方法调用。

        const obj = {name:"zs"}console.log(obj["name"]) //zslet m = new Map()m.set("name","ls")console.log(m.get("name")) //ls

5.设置属性的方式不同。map只能使用set(key,val)方法设置属性。

		const obj = {}obj["name"] = "zs"console.log(obj)let m = new Map()m.set("name","ls")console.log(m)

在这里插入图片描述

6.Size属性。map有size属性,对象没有。Map.size 返回 Map 中元素的数量,而 Object 的键值对个数只能手动计算

        let m = new Map()m.set("name","ls")m.set("age",18)console.log(m.size) //2

感谢大家的阅读,如有不对的地方,可以向我提出,感谢大家!

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

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

相关文章

Linux--文件权限与shell外壳的理解

目录 一.Linux的用户与用户切换,提权 二.对文件权限的理解 1.文件权限角色的权限文件属性 2.Linux中的三种角色 3.为什么会存在所属组这个角色 4.文件属性的意义 4.1.第一个字母的意义 4.2 第2——第10个字母的意义 4.3修改文件权限的方法 三.目录权限 四…

MATLAB - 绘制立体图(平面+水深)

目录 代码结果 代码 % 在 X-Y 平面上绘图 % 正常绘制平面图 [X,Y,Z] peaks; contour(X,Y,Z,20); hold on% ****重点******************************************** % 改为三维视图,具体可以help % view(3); %此时的平面图对应z0 ;默认az-37.5&#x…

【精选】如何设置IDEA中包结构树状或平展,使包结构更清晰明了

可以通过设置项目窗口的树外观对包结构,以及项目栏目中各类文件是否显示,使得自己的项目栏更加清晰,具体设置方法看图: 其中可以设置显示的成员,显示排除文件,显示可见性图标等等,可以通过设置平…

C++STL的string类(一)

文章目录 前言C语言的字符串 stringstring类的常用接口string类的常见构造string (const string& str);string (const string& str, size_t pos, size_t len npos); capacitysize和lengthreserveresizeresize可以删除数据 modify尾插插入字符插入字符串 inserterasere…

python-比较Excel两列数据,并分别显示差异

利用 openpyxl 模块,操作Excel,比较Excel两列数据,并分别显示差异 表格数据样例如下图 A,B两列是需要进行比较的数据(数据源为某网站公开数据);C,D两列是比较结果的输出列 A&#…

elasticsearch-head 启动教程

D:\elasticsearch-head-master>grunt server ‘grunt’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 npm install -g grunt-clinpm install

互联网医院|北京互联网医院系统开发功能

打造移动互联网医院,就是,通过移动互联网将医院与患者、医院内部(医生、护士、领导层)、医院与生态链上的各类组织机构连接起来。以患者为中心,优化医院业务流程,提升医疗服务质量与医院资源能效&#xff0…

工业 4.0 时代的人工智能和自动化

随着科技的日新月异,工业界也在不断迎来新的变革,其中工业 4.0 作为一种智能化、数字化的生产模式更是备受关注。在工业 4.0 时代,人工智能(AI)与自动化技术成为了推动制造业前进的重要动力。本文将就工业 4.0 时代中人…

Java实现屏幕截图程序(一)

在Java中,可以使用Robot类来实现屏幕截图程序。Robot类提供了一组用于生成输入事件和控制鼠标和键盘的方法。 Java实现屏幕截图的步骤如下: 导入Robot类 import java.awt.Robot;创建Robot对象 Robot robot new Robot();获取屏幕分辨率信息 Dimensi…

三坐标测量机如何精确测量产品的高度差?

三坐标测量机通过测量物体的三维坐标来实现精确的尺寸测量,不仅直观且又方便,测量结果精度高,并且重复性好。 三坐标测量机基于三个坐标轴:X轴、Y轴和Z轴,通过控制测针在三个方向上的移动来实现测量。而在测量产品高度…

如何在 PyQt 中实现异步数据库请求

需求 开发软件的时候不可避免要和数据库发生交互,但是有些 SQL 请求非常耗时,如果在主线程中发送请求,可能会造成界面卡顿。这篇博客将会介绍一种让数据库请求变得和前端的 ajax 请求一样简单,且不会阻塞界面的异步请求方法。 实…

LeetCode 108. 将有序数组转换为二叉搜索树

对于算法题,按题型类别刷题才会更有成效,因此我这里在网上搜索并参考了下 “🔥 LeetCode 热题 HOT 100” 的题型归类,并在其基础上做了一定的完善,希望能够记录自己的刷题历程,有所收获!点击下发…