美文网首页
Map 、Set&Object、Array

Map 、Set&Object、Array

作者: 维仔_411d | 来源:发表于2019-07-15 18:54 被阅读0次

    1. Map和Set是什么?

    2. Map和Set与Object和Array有什么区别,为何引入Map和Set?

    JS中原来已经存在了数组Array和对象Object,在ES6中又引入了Map和Set。

    Map和Set是什么?

    1-1 Map

    Map是键值对的集合

    /*
    ** 方法 
    */
     // 创建
    var mapA = new Map([["key1","value1"],["key2","value2"]]);
    // add
    mapA.set("key3","value3"); // 返回新的mapA
    // delete
    mapA.delete("key1"); // 返回删除结果,true or false,不存在该key则返回false
    // get 
    mapA.get("key3"); // 返回该key对应的value,不存在该key则返回undefinded
    // has
    mapA.has("key2"); // 返回是否包含该key,true or false,不存在该key则返回false
    // others
    mapA.toJSON(); // [["key2","value2"],["key3","value3"]]
    // clear
    mapA.clear(); // 清空mapA
    // ??
    mapA.entries()
    mapA.keys() ; // 返回mapA所有key的Interator
    mapA.values(); // 返回mapA所有value的Interator
    /*
    ** 属性
    */
    // size
    console.log(mapA.size); // 返回map 中key的个数
    

    1-2 Set

    Set没有值,是key的集合,key不重复,是存储无重复值的有序列表。

     // 创建
    var setA = new Set(["key1","key2"]);
    // add
    setA.add("key3"); // 返回新的setA
    // delete
    setA.delete("key1"); // 返回删除结果,true or false,不存在该key则返回
    // has
    setA.has("key2"); //  返回是否包含该key,true or false,不存在该key则返回false
    // others
    setA.toJSON(); // ["key2","key3"]
    // clear
    setA.clear(); // 清空setA
    // ??
    setA.entries()
    setA.keys() ; // 返回setA所有key的Interator
    /*
    ** 属性
    */
    // size
    console.log(setA.size); // 返回set 中key的个数
    
    1. Map和Set与Object和Array有什么区别,为何引入Map和Set?

    2-1.Map和Set与Object和Array有什么区别
    乍看之下,Map和Object差不多,Set和Array差不多
    Map&Object
    mapA、mapA.keys()、mapA.values()可以使用for of,objectA不可以;
    mapA有size属性能立即得到key的个数,objA没有;
    objA可以使用for in, mapA不可以

    Set&Array
    Set只存储key 且key不可重复;
    Array 实际是key为连续数字的键值对,value可重复

    2-2. 为何引入Map和Set
    Map有极快的查找速度;
    Set能保证key不重复(与Object.is()结果大致相同,除了+0和-0, set认为+0和-0相同)

    tips: 普通for循环效率最高,forEach和for-in次之,for-of效率最低

    相关文章

      网友评论

          本文标题:Map 、Set&Object、Array

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