ES6——Map与Set

  • Map对象

    Map 对象保存键值对,任何值(对象或原始值)都可作为一个键或一个值

    • Maps 与 Object 的区别

      • 一个 Object 的键只能是字符串或者 Symbol,但 Map 的键可以是任何值
      • Map 中的键是有序的(FIFO(先进先出)原则)
      • Map 的键值对个数可以通过 size 属性获取,而 Object 的键值对个数只能手动计算
      • Object 都有自己的原型,原型链上的键名可能与自己在对象上设置的键名产生冲突
    • Map 的迭代

      • for...of

        //方式1
        for(var [key,value] of myMap){
            console.log(key+"="+value)
        }
        //方式2
        for(var [key,value] of myMap.entries()){	
            console.log(key+"="+value)
        }
        //entries方法返回一个新的Iterator对象,它按插入顺序包含了Map对象的每个元素的[key,value]数组
        //方式3-->遍历键, keys() 方法放回Map的所有键
        for(var key of myMap.keys()){
            console.log(key)
        }
        //方式4-->遍历值,values() 方法返回Map的所有值
        for(var value of myMap.values()){
            console.log(value)
        }
        
      • foreach()

        myMap.forEach(function(value,key){
            console.log(key+"="+value)
        },myMap)
        
    • Map 对象操作

      • Map与Array的转换

        Map --> Array

        var arr = [['1',2],['2',2]]
        var myMap = new Map(arr)	//{"1" => 2, "2" => 2}
        

        Array --> Map

        var myArr = Array.from(myMap)	//Array.from()函数可以将一个 Map 对象转化成一个二维键值对数组
        
      • Map 的合并

        扫描二维码关注公众号,回复: 11432248 查看本文章
        var first = new Map([[1,'one'],[2,'two']])
        var second = new Map([[3,'three'],[4,'four']])
        var myMap = new Map([...first,...second])
        
      • Map 的克隆

      var myMap1 = new Map([[1,'one'],[2,'two']])
      var myMap2 = new Map(myMap2)
      myMap1 == myMap2	//false		Map对象构造函数生成实例,迭代出新的对象
      
  • Set 对象

    Set 对象允许你存储任何类型的唯一值,无论是原始值或是对象引用

    let mySet = new Set()
    mySet.add(1)	//Set(1){1}
    mySet.add(5)	//Set(2){1,5}
    mySet.add(5)	//Set(2){1,5}		//值的唯一性
    mySet.add('some text')	//Set(3){1,5,'some text'}	//值的多样性
    var o = {a:1,b:2}
    mySet.add(o)	//Set(4){1,5,'some text',{...}}
    mySet.add({a:1,b:2})	//Set(5){1,5,'some text',{...},{...}}	对象之间引用不同不恒等,即使值相同,Set也能存储
    
    • 类型转换

      Array --> Set

      var mySet = new Set([1,2,3])
      

      Set --> Array

      var arr = [...mySet]
      

      String --> Set

      var mySet = new Set('hello')	//Set(4){'h','e','l','o'}
      
    • Set 作用

      • 数组去重

        var mySet = new Set([1,2,3,3,4])
        var arr = [...mySet]	//[1,2,3,4]
        
      • 交集

        var a = new Set([1,2,3])
        var b = new Set([4,2,3])
        var intersect = new Set([...a].filter(x=>b.has(x)))	//Set(2){2,3}
        
      • 并集

        var a = new Set([1,2,3])
        var b = new Set([4,5,6])
        var union = new Set([...a,...b])	//Set(6){1,2,3,4,5,6}
        
      • 差集

        var a = new Set([1,2,3])
        var b = new Set([4,2,3])
        var difference = new Set([...a].filter(x=>!b.has(x)))	//Set(1){1}
        

猜你喜欢

转载自www.cnblogs.com/angle-yan/p/13372301.html
今日推荐