es6--(三)set和map数据结构

1.Set和WeakSet

 Set与数组相似,但是Set结构的成员必须是唯一的.

WeakSet与对象类型,但是WeakSet结构的成员只能是对象

Set结构的实例属性和方法

  属性:

    Set.prototype.constructor:构造函数

    Set.prototype.size:返回Set实例的成员总数

  方法:

    --add(value):添加值,返回Set结构本身

    --delete(value):删除某个值,返回一个布尔值

    --has(value):返回一个布尔值,判断该值是否为Set的成员

    --clear:清除所有成员,没有返回值

Set结构遍历方法:

  --keys:返回键对的遍历器

  --values:返回键值的遍历器

  --entries:返回键值对的遍历器

  --forEach:使用回调遍历每个成员

 1 //声明一个Set类型(一)
 2 var set = new Set([1,2,3,4,2,8,4]);
 3 //声明一个Set类型(二)
 4 var set = new Set();
 5 for(let i =0;i<5;i++){
 6     set.add(i);   
 7 }
 8 for(let elem of set){
 9     console.log(elem);  // 1,2,3,4,8
10 }

扩展运算符 (...),转成数组

var set = new Set();
[1,2,4,8,3,4].map(function(elem){
      set.add(elem);
});
console.log("set = "+set); //set = [object Set]
//扩展运算,将setL类型变成数组类型
var arr = [...set];
console.log("arr = " +arr);//arr = 1,2,4,8,3        

删除和清空

var set = new Set();
[1,2,4,8,3,4].map(function(elem){
      set.add(elem);
});
console.log("set = "+set); //set = [object Set]
set.delete(2); //删除2 arr = 1,4,8,3
set.clear();  //清空   arr=
//扩展运算,将setL类型变成数组类型
var arr = [...set];
console.log("arr = " +arr);//arr = 1,2,4,8,3 

遍历键值

var set = new Set();
[1,2,4,8,3,4].map(function(elem){
     set.add(elem);
});
//键和值是相同的
set.forEach(function(value,key){
   console.log(key + " = " + value);//1=1,2=2,3=3,4=4,8=8
});

 WeakSet方法:

  --add(value):添加 一个成员

  --delete(value):清楚指定成员

  --has(value):返回一个boolean,判断某个值是否存在

 WeakSet的对象都是弱应用,即垃圾回收机制不考虑WeakSet对该对象的引用,也就是说如果其他的对象都不再引用该对象,该对象就会被回收机制收回。因此,WeakSet是不可遍历的,因为成员很可能在遍历之后被回收了,消失了,成员就取不到了。

 

2.Map和WeakMap 

  

原文地址:https://www.cnblogs.com/thonrt/p/6227246.html