美文网首页
键值类型Map,Object

键值类型Map,Object

作者: skoll | 来源:发表于2022-06-22 23:14 被阅读0次

    Object

    1 .现在使用的对象,只能提供键值对的集合,只能用字符串当作键
    2 .如果想拿一个document.querySelector('#div')的dom节点作为键,会被自动转为[object HTMLDivElement]: "meta"
    3 .而且遍历出来是不保序的
    4 .其他功能:键值获取,删除,检测某个键是否存在
    5 .需要对个别元素进行操作的时候用Object
    6 .js中几乎所有的对象都是Object实例

    Map

    1 .键的范围不止是字符串,各种类型的值,字符串,对象,Node节点都可以
    2 .map的优势

    1 .Object的键值只能是字符串,Map可以是任意类型,上面的存起来就是这个 {div#div => 'meta'} 提供的是值对值的存储
    2 .不需要手动计算大小,有属性返回
    3 .Map的遍历遵循元素的插入顺序
    4 .Object有原型,所有映射会有一些确省的值,需要这样Object.create(null)回避
    

    3 .Map的键是和内存地址绑定的,只要是内存地址不一样,就视为两个键,可以避免同名属性碰撞的问题
    4 .简单类型作为键的情况

    1 .0,-0是一个键
    2 .布尔值true,字符串true是两个不同的值
    3 .undefined,null也是两个不一样的
    4 .NaN是一个键,虽然NaN自己和自己不相等
    

    5 .Map是为了快速搜索和查找数据而存在的
    6 .Map是可迭代对象,键值对可以通过for ..of循环迭代

    创建

    1 .Object速度更快,

    访问元素

    1 .差距不大

    插入元素

    1 .需要新增很多元素的时候,Object会比Map多占用78%的内存

    删除元素

    1 .时间复杂度一样,但是map有clear方法,object需要循环删除
    2 .差距不大

    获取大小

    元素迭代

    类型转换

    1 .json转为map
    2 .

    使用map 大佬一般不需要出山

    1 .键值不是数字,字符串,symbol
    2 .存储大量的数据,内存更少
    3 .需要新增/删除许多元素的时候,速度更快
    4 .需要保持插入顺序的时候

    使用Object

    1 .简单的数据结构,数据少的时候内存更少,速度快
    2 .需要覆盖原型上的键的时候,用这个
    3 .需要对多个键值进行运算的时候,他比较简单
    4 .如果要内部维护自己的逻辑和属性,只能用object

    {
    name:"test",
    print:function(){
      console.log(`${this.name}`)  
    }
    }
    

    5 .知道所有的key,都为字符串或整数.需要一个简单的结构去存储这些数据,Obejct是一个非常好的选择.构建一个Object并通过知道的key获取元素的性能要优于Map(字面量vs构造函数 直接获取vsget()方法)
    6 .[]访问动态拼接属性好像object更方便一点.

    相关文章

      网友评论

          本文标题:键值类型Map,Object

          本文链接:https://www.haomeiwen.com/subject/dvivsktx.html