JS中Map对象与object的区别

若想了解Map对象可以阅读本人这篇ES6初步了解Map

Map对象与object有什么区别?让我为大家介绍一下吧!

共同点

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

javascript 复制代码
		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均可以

javascript 复制代码
		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的创建方式:

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


Map对象的创建方式:

javascript 复制代码
let m = new Map()


4. key的调用不同。 map只能用原生的get方法调用。

javascript 复制代码
        const obj = {
            name:"zs"
        }
        console.log(obj["name"]) //zs
        let m = new Map()
        m.set("name","ls")
        console.log(m.get("name")) //ls

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

javascript 复制代码
		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 的键值对个数只能手动计算

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

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

相关推荐
菜鸟~noob23321 分钟前
【电子战】第三季预告—波武器与电子系统强力毁伤
开发语言·数据库·matlab·电子战
Ai-_Man1 小时前
您您这可以把Grok的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。AI导出鸭
javascript·人工智能·ai·小程序·电脑
惊讶的猫1 小时前
工具选对之后还不够:商城 Agent 的参数与权限治理
开发语言·python
传人once1 小时前
多图片上传预览功能如何写
前端·css·html·jquery·html5
cmpxr_1 小时前
【MicroPython】如何刷新ESP8266的固件
开发语言·micropython
Eric.462 小时前
Wan‑Animate+MiniMax-H3 本地部署 AI 漫剧流水线:8G 显存动作迁移与动态分镜工程实战
前端·人工智能·comfyui·ai漫剧
搭贝2 小时前
上厕所的时间搭好一套系统:AI自动生成实测
开发语言·人工智能·低代码·ai·php·搭贝
liangshanbo12152 小时前
JavaScript 异步核心主线
javascript·事件循环·异步操作
智感子2 小时前
智能称重·数据上云:从仪表读数到可追溯的计量凭证
开发语言·php
\光辉岁月/2 小时前
7.javase-面向对象
java·开发语言