• set,map


    1. set

      1 {
       2     let list = new Set();
       3     list.add(5);// set添加元素用add
       4     list.add(7);
       5     console.log('size',list.size)  //获取长度2
       6 }
       7 {
       8     //可以给set直接初始化
       9     let arr = [1,2,3,4,5];
      10     let list = new Set(arr);
      11     console.log('size',list.size)  // 5
      12 }

      set的值是唯一的,应用:数组去重

       1 {
       2     let list = new Set();
       3     list.add(1);
       4     list.add(2);
       5     list.add(1);   
       6     console.log('list',list)  
       7 
       8     let arr2 = [1,2,3,2,1];  //字符串不会自动转换,2和‘2’是不一样的值,不会去重
       9     let list2 = new Set(arr2);
      10     console.log('list2',list2)    //1,2,3
      11 }

      添加,移除,清除,含有

      1 {
      2     let arr = ['add','delete','clear','has'];
      3     let list = new Set(arr);
      4     console.log('has',list.has('add'))
      5     console.log('delete',list.delete('add'),list)
      6     list.clear();
      7     console.log(list)
      8 }

      遍历

       1 {
       2     let arr = ['add','delete','clear','has'];
       3     let list = new Set(arr);
       4      for(let key of list.keys()){
       5          console.log('key',key)
       6      }
       7      for(let value of list.values()){
       8          console.log('value',value)
       9      }
      10      for(let [key,value] of list.entries()){
      11          console.log('entries',key,value)
      12      }
      13 
      14      list.forEach(item=>{console.log(item)})
      15 }
    2. map

       1 {
       2     // map
       3     let map = new Map();
       4     let arr = ['123'];
       5 
       6     map.set(arr,456); //map 添加元素用set,以key,value 添加,key可以是任意类型
       7     console.log(map,map.get(arr))  //获取 get
       8 }
       9 
      10 {
      11     let map = new Map([['a',1],['b',2]])   //注意格式
      12     console.log(map)
      13     console.log('size',map.size)
      14     console.log('delete',map.delete('a'),map)
      15     console.log('clear',map.clear(),map)
      16 
      17 }
    3. WeakSet,WeakMap

       1 {
       2     // weakSet 数据只能是对象,是弱引用,不会检测其他地方有没有用到
       3     // 没有clear方法,不能遍历,没有size属性
       4     let weakList = new WeakSet();
       5     let arg = {};
       6     weakList.add(arg);
       7     console.log(weakList)
       8 }
       9 {
      10     // WeakMap 接收的key值只能是对象,没有clear,不能遍历
      11     let WeakMapList = new WeakMap();
      12     let  o = {};
      13     WeakMapList.set(o,123);
      14     console.log(WeakMapList)
      15 }
    4. map,set与array的对比  

       map 数组的对比

       1 {
       2     // 数据结构横向对比,增删改查
       3     let map = new Map();
       4     let array = [];
       5     //
       6     map.set('t',1);
       7     array.push({t:1});
       8     console.info('增',map,array)
       9 
      10     //
      11     let map_exist = map.has('t');  //true
      12     let array_exist = array.find(item=>item.t); //返回当前值
      13     console.info('查',map_exist,array_exist)
      14 
      15     //
      16     map.set('t',2);
      17     array.forEach(item=>item.t?item.t=2:'');  //判断如果值存在,则进行修改,不存在不进行修改
      18     console.info('改',map,array)
      19 
      20     //
      21     map.delete('t')
      22     let index = array.findIndex(item=>item.t); //查找元素所在位置下标
      23     array.splice(index,1);  //删除指定位置的元素 
      24     console.info('删',map,array)
      25 
      26 }

      set与数组的对比

       1 {
       2     let set = new Set();
       3     let array= []; 
       4     //
       5     set.add({t:1});
       6     array.push({t:1});
       7     console.info('add',set,array)
       8 
       9     //
      10     let setExist = set.has({t:1});
      11     let arrayExist = array.find(item=>item.t)
      12     console.info('get',setExist,arrayExist)
      13 
      14     //
      15     set.forEach(item=>item.t?item.t = 3 : '');
      16     array.forEach(item=>item.t?item.t = 3 :'');
      17     console.info('update',set,array)
      18 
      19     //
      20     set.forEach(item=>item.t?set.delete(item.t):'')
      21     let index = array.findIndex(item => item.t);
      22     array.splice(index,1);
      23     console.info('delete',set,array)
      24 }
    5. map,set与object的对比

       1 {
       2     //map set object 对比
       3     let item = {t:1};
       4     let map = new Map();
       5     let set = new Set();
       6     let obj = {};
       7 
       8     //
       9     map.set('t',1);
      10     set.add(item);
      11     obj['t'] = 1;
      12 
      13     console.info('add',map,set,obj)
      14 
      15     //
      16     console.table({
      17         map_exist:map.has('t'),
      18         set_exist:set.has(item),
      19         obj_exist:'t' in obj      //对象用in查找
      20     })
      21 
      22     //
      23     map.set('t',2);
      24     item.t=2;
      25     obj['t']=2;
      26     console.log('update',map,set,obj)
      27 
      28     //
      29     map.delete('t');
      30     set.delete(item);
      31     delete obj['t'];
      32     console.info('delete',map,set,obj)
      33 }
  • 相关阅读:
    Java实现 蓝桥杯VIP 基础练习 完美的代价
    Java实现 蓝桥杯VIP基础练习 矩形面积交
    Java实现 蓝桥杯VIP 基础练习 完美的代价
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    核心思想:想清楚自己创业的目的(如果你没有自信提供一种更好的产品或服务,那就别做了,比如IM 电商 搜索)
    在Linux中如何利用backtrace信息解决问题
  • 原文地址:https://www.cnblogs.com/zynkl1314/p/12023525.html
Copyright © 2020-2023  润新知