美文网首页
ECMAScript6--11.Set-Map数据结构

ECMAScript6--11.Set-Map数据结构

作者: 飞菲fly | 来源:发表于2017-10-21 12:02 被阅读21次

1.数据结构

  • Set的用法

    • 可以当成数组来理解,一种集合;
    • set集合中的元素是不能重复的;(Set这个特性可以做去重;)
  • WeakSet的用法

  • Map的用法

    • 和Object做对比;一个key、一个value值;object的key一定是字符串;
    • Map中的key可以是任意的数据类型;比如数组、一个对象作为它的key都可以;
  • WeakMap的用法

2.怎么用?什么场景用?

  • Set增加元素用add方法;

  • 获取当前Set变量有几个元素用size属性;

    {
      //向Set里面增加元素的时候要用add这个方法;
      let list = new Set();
      
      list.add(5);
      list.add(7);
      
      //获取当前Set变量有几个元素(可以理解原来数组的长度length);
      console.log('size',list.size); //size  2
    
    }
    
    {
      //Set初始化的时候就把元素初始化进去(默认值的意思);
      let arr = [1,2,3,4,5];
      let list = new Set(arr);
      
      cosole.log('size',list.size); //5
    }
    
  • 添加重复会报错;

    • Set使用很重要的一个场景就是去重;
  {
    let list = new Set();
    list.add(1);
    list.add(2);
    //这个是没有成功添加进去的;添加重复的是不会报错的,只是不会生效而已;
    list.add(1); 
    
    console.log('list',list); //list  Set{1,2}

    //Set使用很重要的一个场景就是去重;
    //*它在转换元素的时候,不会做数据类型一个转换;
    let arr =[1,2,3,1,2];
    //let arr =[1,2,3,1,'2'];
    let list2 = new Set(arr);
    
    console.log('unique',list2); //unique Set{1,2,3}
    //console.log('unique',list2); //unique Set{1,2,3,'2'}
 
}
  • Set方法:add、delete、clear、has

    {
      let arr =['add','delete','clear','has'];
      let list = new Set(arr);
      
      console.log('has',list.has('add')); //has true
      console.log('delete',list.delete('add'),list);
      //输出:delete true  Set{"delete","clear","has"}
      list.clear();
      console.log('list',list);//list Set{}
    
    }
    
  • Set遍历(读取)

{
    let arr =['add','delete','clear','has'];
    let list = new Set(arr);
    
    
    for(let key of list.keys()){
    
        console.log('keys',key); 
        //keys add
        //keys delete
        //keys clear
        //keys has
    }
    
    for(let value of list.values()){
    
        console.log('value',value); 
        //value add
        //value delete
        //value clear
        //value has
    }
    
    for(let value of list){
    
        console.log('value',value); 
        //value add
        //value delete
        //value clear
        //value has
    }
    
    for(let [key,value] of list.entries()){
    
        console.log('entries',key,value); 
        //entries add  add
        //entries delete  delete
        //entries clear  clear
        //entries has   has
    }
    
    list.forEach(function(item){
        console.log(item);
    });
    //add
    //delete
    //clear
    //has
}
  • Set和weakSet的区别:
    • WeakSetSet支持的数据类型不一样
      WeakSet元素只能是对象,不能是数值、布尔值、字符串;
    • WeakSet中的对象都是弱引用不会检测这个对象有没有在其他地方用过;不会跟垃圾回收机制挂钩上
      (在WeakSet中添加了一个对象,这个对象不是整个值拷过来,它是一个地址的引用,不会检测这个地址是不是已经被垃圾回收掉了)
    • weakSet没有size属性 ,没有clear方法,不能遍历;
{ 
    let weakList = new WeakSet();
    let arg = {};
    
    weakList.add(arg);
    //weakList.add(2); //会报错,无效的值used in weak set;
    
    console.log('weakList',weakList); //weakList weakSet{Object{}}
}
  • Map添加元素用set方法;set(key,value)
    • Map中的key可以是任意的数据类型;
{
    let map = new Map();
    let arr = ['123'];
    
    map.set(arr,456);
    console.log('map',map,map.get(arr)); 
    //map Map{["123"] =>456} 456
}
  • 常用的属性值和方法:
    • Map的遍历Set用法是一样的,keys、values、entries、forEach
{
    let map = new Map([['a',123],['b',456]]);
    console.log('map args',map);
    //map args Map{"a" =>123,"b" =>456}

    //获取map对象有多少个元素;
    console.log('size',map.size); //size 2
    
    //获取某一个用get;
    
    //删除:delete
    console.log('delete',map.delete('a'),map);
    //delete  true  Map{"b" =>456}
    
    //清空clear
    console.log('clear',map.clear(),map);
    //clear undefined  Map{}
    
    //Map的遍历和Set用法是一样的,keys、values、entries、forEach
}
  • WeakMap和Map的区别:

    • WeakMap接收的key值必须是对象,不能是其他的;
    • WeakMap没有size属性,不能使用clear
    • WeakMap不能遍历
    {
    let weakmap = new WeakMap();
    
    let o ={};
    weakmap.set(o,123);
    console.log(weakmap.get(o)); //123
    
     }

相关文章

  • ECMAScript6--11.Set-Map数据结构

    1.数据结构 Set的用法可以当成数组来理解,一种集合;set集合中的元素是不能重复的;(Set这个特性可以做去重...

  • IOS开发_数据结构

    1、数据结构; 2、算法; 3、数据结构与算法; 1、数据结构; 1.1 概念: 数据结构:数据结构是计算...

  • py基础

    5Python集合容器 数据结构数据结构 一般将数据结构分为两大类: 线性数据结构和非线性数据结构。 线性数据结构...

  • 思维导图之数据结构+算法

    数据结构+算法 = 程序 数据结构比较 参考文章 数据结构与算法数据结构与算法(java)

  • 数据结构与算法分析:大纲]

    00数据结构与算法分析:大纲01数据结构:数组02数据结构:链表03数据结构:栈03数据结构:队列 本系列课程主要...

  • 数据结构:数组

    00数据结构与算法分析:大纲01数据结构:数组02数据结构:链表03数据结构:栈03数据结构:队列 数组 数组是一...

  • 数据结构—概述

    数据结构概述 数据结构概述:程序设计 = 数据结构 + 算法数据结构:数据元素之间存在所有特定关系的集合,数据结构...

  • OVS 源码分析整理

    OVS 核心代码 OVS 架构 OVS 主要的数据结构数据结构关系图主要的数据结构和数据结构的参数数据结构代码 d...

  • 01. 数据结构与算法绪论

    一、数据结构 1. 什么是数据结构 2. 数据结构的分类 3. 常用的数据结构 4. 数据结构的应用表现 二、算法...

  • 数据结构与算法 - 查找

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构数据结构...

网友评论

      本文标题:ECMAScript6--11.Set-Map数据结构

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