ES6--Map和Set数据结构

一、Set结构

 * Set 本身是一个构造函数
 * Set 的构造函数constructor 是自己本身
 * Set 使用的时候 需要new对象
 * Set 结构不会添加重复的值,即其中所有值都是唯一的,可用于数组去重
  • Set的实例化
  let arr=[1,2,3,4,5];
  let set=new Set(arr);
  console.log(set);   //set(5) [1,2,3,4,5]
  
  //数组去重
  let set=new Set([1,2,3,3,4,5,5,6,6]);
  console.log(set);  //set(6) [1,2,3,4,5,6]
  • Set对象的属性和方法
  1. size属性:返回Set实例的成员总数
  2. add() 方法:将值添加到Set实例中
  3. delete() 方法:删除Set实例的某个值 删除成功返回true 没找到要删除的值时,即删除失败,返回false
  4. has() 方法:检测是否有某个值 有返回true 无false
  5. clear() 方法:清除所有的成员 没有返回值的
  • Set对象转换为数组的两种方法
   let set=new Set([1,2,3,4,5,6]);
   //方法一:用Array对象的from方法将set集合转换为数组
   console.log(Array.from(set));  //[1,2,3,4,5,6]
   //方法二:用扩展运算符“...” 将set集合拆为数组
   let [...array]=[...set];
   console.log(array);   //[1,2,3,4,5,6]
  • Set结构实例的遍历方法
    1.obj.keys():返回键名的遍历器
    2.obj.values():返回键值的遍历器
    3.obj.entries():返回键值对的遍历器
    4.obj.forEach():使用回调函数遍历每个成员

前三种在对象的扩展中已进行过说明,在此不再赘述

forEach()方法:参数是一个回调函数,该函数的参数依次为键值、键名,Set 结构的键名和键值是同一个值

    //forEach方法
    let set=new Set(["a","b","c","d"]);
    console.log(set);
    set.forEach((value, key) => {
        console.log(value, key);
    });
   // a a
   // b b
   // c c
   // d d

二、Map结构:本质上是键值对的集合

  • Map结构的实例化

    1.通过set()方法添加键值对

 let arr=[1,2,3,4,5,6];
 let obj={
    name:"张三",
    age:20
 }
  // let map=new Map("array",[1,2,3,4,5]);  //错误写法
  //需要通过set方法添加键值对
 let map=new Map();
 map.set("array",arr);
 map.set("object",obj);
 console.log(map);  //Map(2) {"array" => Array(6), "object" => {…}}
 //根据键名取键值
 console.log(map.get("array"));  //(6) [1, 2, 3, 4, 5, 6]
  1. 可以直接传入二维数组
 let map=new Map([[1,2],[3,4]]);
 console.log(map);
 //0: {1 => 2}
 //1: {3 => 4}
  1. 可以传入对象
  let map=new Map([["张三",{age:20,sex:"男"}],["李四",{age:19,sex:"女"}]]);
  console.log(map);
  //0: {"张三" => Object} 
  //1: {"李四" => Object}
  • Map实例对象的属性和方法
  1. size:返回Map实例的成员个数
  2. has() :检测键是否存在 返回true/false
  3. delete():删除键 返回true/false
  4. clear():全部清除
  5. set():设置Map结构中的值(键和键值)
  6. get():获取Map结构中的值 (键和键值)
  • Map实例转换为对象
 let map=new Map();
 map.set("a",1);
 map.set("b",1);
 map.set("c",1);

 let obj={};
 for(let key of map.keys()){
     obj[key]=map.get(key);
 }
 console.log(obj);
 //{a: 1, b: 1, c: 1}
 console.log(JSON.stringify(obj));
 //{"a":1,"b":1,"c":1}

JSON.parse()    //从一个字符串中解析出json对象
JSON.stringfy()  //从一个对象中解析出字符串
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值