zoukankan      html  css  js  c++  java
  • 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 的合并

          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}
          
  • 相关阅读:
    centos 安装 TortoiseSVN svn 客户端
    linux 定时任务 日志记录
    centos6.5 安装PHP7.0支持nginx
    linux root 用户 定时任务添加
    composer 一些使用说明
    laravel cookie写入
    laravel composer 安装指定版本以及基本的配置
    mysql 删除重复记录语句
    linux php redis 扩展安装
    linux php 安装 memcache 扩展
  • 原文地址:https://www.cnblogs.com/angle-yan/p/13372301.html
Copyright © 2011-2022 走看看