es6中的Set和Map内容整理

发布于 2022年 05月 19日 13:08

Set:是一种新的数据结构,类似于数组,但是里面的值都是唯一的

set本身是一个构造函数,可以通过const set = new Set()来创建一个set类型的值,通过构造函数创建后,会得到set原型上的一些方法

 

ps:通过构造函数创建新对象的过程,开辟一块新内存,创建一个空对象,设置原型继承原型上的方法,绑定this,执行构造函数中的方法,返回这个新对象

一般可以用set去除数组中的重复元素:[...new Set(array)],    Array.from(new Set(array))]

 

Set上的一些方法:

add(): 添加元素

delete():删除某个值

has(): 判断set中是否有这个值

clear():清空所有值

 

遍历操作:

keys():返回键名

values(): 返回键值

entries():返回键值对

forEach():使用回调函数遍历每个成员

let set = new Set(['red', 'green', 'blue']);

for (let item of set.keys()) {
  console.log(item);
}
// red
// green
// blue

for (let item of set.values()) {
  console.log(item);
}
// red
// green
// blue
let set = new Set(['red', 'green', 'blue']);
// for...of 循环(set数据结构默认可遍历,可以直接用for of 循环替换values()) for (let x of set) { console.log(x); } // red // green // blue

for (let item of set.entries()) { console.log(item); } // ["red", "red"] // ["green", "green"] // ["blue", "blue"]

使用forEach循环

let set = new Set([1, 4, 9]);
set.forEach((value, key) => console.log(key + ' : ' + value))
// 1 : 1
// 4 : 4
// 9 : 9

可以间接使用数组中的方法

let set = new Set([1, 2, 3]);
set = new Set([...set].map(x => x * 2));
// 返回Set结构:{2, 4, 6}

let set = new Set([1, 2, 3, 4, 5]);
set = new Set([...set].filter(x => (x % 2) == 0));
// 返回Set结构:{2, 4}

WeakSet:

与Set的区别:

WeakSet 的成员只能是对象,而不能是其他类型的值。

WeakSet 中的对象都是弱引用,即垃圾回收机制不考虑 WeakSet 对该对象的引用

weakSet中的一些方法:

add(), delete(), has()

 

推荐文章