ES6新增的数据结构Set和WeakSet

一、Set

ES6提供了新的数据结构Set,Set对象不是真正的数组,可以用Array.from()方法吧Set对象转化为真正的数组。 可以用来保存复杂数据类型(Object)或者基本数据类型, 所有保存的值都是唯一的。 (Set是一种可遍历的集合对象,可以和数组进行比较理解)

Set对象下面的方法:

add(value):添加某个value到Set对象里面,返回Set结构本身。
delete(value):删除某个值,返回一个布尔值,true表示删除成功。
has(value):返回一个布尔值,表示参数value是否为Set的成员。
clear():清除Set中所有成员,没有返回值。
keys():返回一个键名的遍历器
values():返回一个键值的遍历器
entries() :返回一个键值对的遍历器
forEach():使用回调函数遍历每个成员
.size:获取Set结构的长度

1、Set本身是一个构造函数,用来生成Set数据结构
let set1 = new Set();
set1.add(1);
set1.add("winne");
set1.add(2);

console.log(set1); // {1, "winne", 2}
console.log(set1.size);  // 3
2、带参数的初始化 ,可用于数组去重
let arr = [1,2,3,1,4,2,"1"];
let set2 = new Set(arr);
console.log(set2); // {1, 2, 3, 4, "1"}
let arr_unique = Array.from(set2);
console.log(arr_unique); // [1, 2, 3, 4, "1"]

二、WeakSet

参考资料:https://www.cnblogs.com/diligenceday/p/5479076.html#_label4

WeakSet其实就是弱类型的Set。
WeakSet对象是一些对象值的集合, 并且其中的每个对象值都只能出现一次,WeakSet只能存对象类型的元素,比如:Object, Array, Function 等等;有了弱引用的WeakSet, 就不用担心内存泄漏了,如果别的对象不引用该对象, 这个对象会被垃圾回收机制自动回收;

WeakSet对象的方法只有三个,而且WeakSet对象没有.size属性;
  add(value)
  delete(value)
  has(value)

这三个方法的使用方式都和Set一样。

猜你喜欢

转载自blog.csdn.net/m0_38134431/article/details/83898110
今日推荐