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"]]);