Skip to content

Set

数组转换

可以使用点语法Array.form 静态方法将Set类型转为数组,这样就可以使用数组处理函数了

js
const set = new Set(["love", "you"])
console.log([...set]) //["love", "you"]
console.log(Array.from(set)) //["love", "you"]

去除重复

去除字符串重复

javascript
console.log([...new Set("I love you to much")].join(""));//I loveyutmch

遍历数据

使用 keys()/values()/entries() 都可以返回迭代对象,因为set类型只有值所以 keys与values 方法结果一致。

js
const hd = new Set(["love", "you"])
console.log(hd.values()) //SetIterator {"love", "you"}
console.log(hd.keys()) //SetIterator {"love", "you"}
console.log(hd.entries()) //SetIterator {"love" => "love", "you" => "you"}

可以使用 forEach 遍历Set数据,默认使用 values 方法创建迭代器。

为了保持和遍历数组参数统一,函数中的value与key是一样的。

javascript
let arr = [7, 6, 2, 8, 2, 6];
let set = new Set(arr);
//使用forEach遍历
set.forEach((item,key) => console.log(item,key));

也可以使用 forof 遍历Set数据,默认使用 values 方法创建迭代器

javascript
//使用for/of遍历
let set = new Set([7, 6, 2, 8, 2, 6]);

for (const iterator of set) {
  console.log(iterator);
}

WeakSet

WeakSet结构同样不会存储重复的值,它的成员必须只能是对象类型的值。

声明定义

以下操作由于数据不是对象类型将产生错误

javascript
new WeakSet(["hdcms", "houdunren"]); //Invalid value used in weak set 数组内的值需要为对象类型,因为会分别存储。

new WeakSet("hdcms"); //Invalid value used in weak set

WeakSet的值必须为对象类型

javascript
new WeakSet([["hdcms"], ["houdunren"]]);