你知道Object 和Map的区别吗?

本文对比了JavaScript中的Object和Map两种数据结构,详细阐述了它们在键类型、键的顺序、键值获取、存在判断、删除操作、大小计算、可迭代性及JSON操作上的差异,揭示了在不同场景下选择使用Object或Map的原因。
摘要由CSDN通过智能技术生成

Object VS Maps

Object与 Maps 类似,都允许将键(key)设置为值(value)、检索这些值、删除键以及检测是否在键中存储了某些内容。由于这个原因,Object在历史上一直被用作Map。但是在某些情况下,使用 Map 有一些重要的区别。

  • Object的键是string、number和Symbol,而 Map 可以是任何值,包括函数、对象和任何原始值。

    // Object 创建
    const obj1 = new Object()
    const obj2 = {}
    const obj3 = Object.create({}) // 创建指定原型
    // Map 创建
    const map = new Map();

  • Map 中的键是有序的,而添加到 Object 中的键不是。因此,在对object获取key值时会按照number(升序),string, Map 对象会按插入顺序返回键。

    var obj1 = {7:‘s’, ‘g’:1, [Symbol(‘c’)]:66, 1:‘q’,‘a’:‘e’}
    Object.keys(obj1);//[‘1’, ‘7’, ‘g’, ‘a’] Symbol有隐藏性是不会打印出来的

    var map1 = new Map()
    map1.set(7,‘q’)
    map1.set(‘a’,0)
    map1.set(Symbol(‘c’),5)
    map1.set(1,‘i’)
    map1.keys(); // MapIterator {7, ‘a’, 1} Symbol有隐藏性是不会打印出来的

  • 对key的取值方式不一样

    // 通过 . 或 []
    var obj1 = {7:‘s’, ‘g

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值