ES6总结 11-map-set与数组和对象的比较

ES6学习总结是自己在学习过程中的总结,记笔记就是为了督促自己学习和复习,好记性不如烂笔头。如果有错误,感谢指出。

set数据结构

set数据类型的元素必须是唯一的,如果加入了重复的不会成功添加;可以做去重;

方式1
{
  let list = new Set();
  list.add(5);
  list.add(7);

  console.log('size',list.size);
}
方式2
{
  let arr = [1,2,3,4,5];
  let list = new Set(arr);

  console.log('size',list.size);
}
不会做数据类型的转换
{
  let list = new Set();
  list.add(1);
  list.add(2);
  list.add(1);//不会报错 只是不会生效

  console.log('list',list);

  let arr=[1,2,3,1,'2'];
  let list2=new Set(arr);

  console.log('unique',list2);
}
set的几个方法:add clear delete has
{
  let arr=['add','delete','clear','has'];
  let list=new Set(arr);

  console.log('has',list.has('add'));//是否包含
  console.log('delete',list.delete('add'),list);//清空
  list.clear();
  console.log('list',list);
}
set遍历:keys和values返回的都是set里面的值
{
  let arr=['add','delete','clear','has'];
  let list=new Set(arr);

  for(let key of list.keys()){
    console.log('keys',key);
  }
  for(let value of list.values()){
    console.log('value',value);
  }
  for(let [key,value] of list.entries()){
    console.log('entries',key,value);
  }

  list.forEach(function(item){console.log(item);})
}

Weakset用法

  • 与set非常像,但其支持的数据类型不同,weakset支持的只能是对象,否则报错;
  • weakset是弱引用,只有地址引用,不会检测对象是否在其他地方用过,意味着不会和垃圾回收机制挂钩;
  • weakset没有size方法,不能遍历。
  • add clear delete has用法一致
{
  let weakList=new WeakSet();

  let arg={};

  weakList.add(arg);

  // weakList.add(2);

  console.log('weakList',weakList);
}

Map用法

set添加元素用add,map添加元素用set,易混淆

map的key可以是任何数据类型。

方式1:
{
  let map = new Map();
  let arr=['123'];

  map.set(arr,456);

  console.log('map',map,map.get(arr));
}
方式2:
{
  let map = new Map([['a',123],['b',456]]);
  console.log('map args',map);
}
map的几个方法:size set clear delete get
{
  console.log('size',map.size);
  console.log('delete',map.delete('a'),map);
  console.log('clear',map.clear(),map);
}
Map遍历

同set

WeakMap用法

key必须是对象,没有size,不能用clear,不能遍历

{
  let weakmap=new WeakMap();

  let o={};
  weakmap.set(o,123);
  console.log(weakmap.get(o));
}





















你可能感兴趣的:(ES6总结 11-map-set与数组和对象的比较)