美文网首页
es6的set和map

es6的set和map

作者: Fastrider | 来源:发表于2019-04-14 17:45 被阅读0次

    一、set数据结构

     //set   map   ES6添加数据格式     array   object
          //set   类似于array   但是成员的值是唯一的
          //map   类似于object
          //数组
          var arr = new Array();  //arr[0]
          var o = new Object();   //o.name
          var s = new Set();
          s.add(1).add(2).add(3);  //数据是唯一的
          console.log(s);
          //2种方式
          var s2 = new Set([1,4,5,6,7,8,89,'8']);
          //3种方式
          var s3 = new Set();
          [1,4,5,6,7,8,89,'8'].forEach((item)=>{
            s3.add(item);
          });
    
    > 具体方法
      add(1);   //添加
      s2.delete(name); //删除单个  按名称 返回true,false
      s2.has(2);  //判断是否是set的成员 返回有true false
      s2.clear(); //清除全部  没有返回值
      s2.size;  //长度
      代码演示:
    
    var s2 = new Set([1,4,5,6,7,8,89,'8']);
    s2.add(99);   //添加
     s2.delete(7); //删除单个  按名称 返回true,false
     s2.has(2);  //判断是否是set的成员 返回有true false
     s2.size;  //长度
     s2.clear(); //清除全部  没有返回值
    
    运行结果: 图1.1 add操作
    图1.2 delete操作
    图1.3 其他方法
          //转为数组   Array.from();
          var s4 = new Set([1,4,5,2,56,6]);
          let arr = Array.from(s4);
          //另一种
          var arr2 = [1,4,5,2,56,6];
          var arr3 = Array.from(new Set(arr2));  //OK
          //另简洁方法
          [...new Set(arr2)];  //OK
    
          //数组转为set数据结构
          var arr4 = [1,4,5,2,56,6];
          let s5 = new Set(arr4);
    
          //循环 for of
          var s6 = new Set([1,4,5,2,6,6]);
          for(let v of s6.keys()){  //values();  entries()键值对
            console.log(v);
          };
          s6.forEach((value,key)=>{
            console.log(value,key);
          });
    

    二、map数据结构

    //map
          var m = new Map();
          m.set('name','abc').set('age',18);
          var b = {name:'b'};
          m.set(b,'value');
    
      >具体方法:
      .set()
      .get()
      .has()
      .delete()
      .clear()
      .size
    

    代码演示:

    var m = new Map([['name','abc'],['name2','abc2'],['name3','abc3']]);
    s2.set('name4','abc4');   //添加
     s2.delete('name2'); //删除单个  按名称 返回true,false
     s2.has('name');  //判断是否是map的成员 返回有true false
     s2.size;  //长度
     s2.clear(); //清除全部  没有返回值
    
    
    运行结果: 图2 方法演示
          //接受一个数组来作为参数
          var m = new Map([['name','abc'],['name2','abc2'],['name3','abc3']]);
          for(let v of m.keys()){  //values() entries()  键值对
              console.log(v);   //name name2 name3  
          };
          for(let [key,value] of m){
            console.log(key,value)
          };
    
          //其他结构的转换
          //1、map转为数组
          var m = new Map([['name','abc'],['name2','abc2'],['name3','abc3']]);
          [...m.keys()];// ["name", "name2", "name3"]
          [...m.values()];//["abc", "abc2", "abc3"]
          [...m];//[['name','abc'],['name2','abc2'],['name3','abc3']];
          //2、数组转换为map
          var a = [['name','abc'],['name2','abc2'],['name3','abc3']];
          new Map(a);
          //3、Map转换为对象
          var m = new Map([['name','abc'],['name2','abc2'],['name3','abc3']]);
          var obj = {};
          for(let [k.v] of m){
            obj[k] = v;
          };
          console.log(obj);
          //4、对象转为map
          var obj2 = {flag:true,lists:'lists'};
          var m2 = new Map();
          for(let k in obj2){
            m2.set(k,obj2[k]);
          };
    

    相关文章

      网友评论

          本文标题:es6的set和map

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