ES6语法--新的数据结构Set/WeakSet那些事
程序员文章站
2023-12-21 13:15:40
...
Set/WeakSet
新的数据结构Set
代码的形式体现。
声明方式
常用方法
应用场景
WeakSet
/**
* 新的数据结构 Set 无序,不可重复
* 常用方法
* 遍历方式
* 应用场景
* WeakSet
* @Author: 毛毛
* @Date: 2021-09-11 21:01:52
* @Last Modified by: 毛毛
* @Last Modified time: 2021-09-11 21:40:06
*/
// 定义一个Set
// const s1 = new Set();
// 定义一个Set,参数是可迭代对象
const s2 = new Set([1, 2, 2, 3]);
console.log(s2);//?
// 添加一个数据
s2.add(4);// s2 = //?
s2.add(5).add(6);
console.log(s2);
// 删除一个数据
s2.delete(2);// 返回值是是否删除成功
console.log(s2.delete(1), s2); //
// 集合set是否包含某个元素 has
console.log(s2.has(3), s2.has(7));
// 集合set的元素个数 size是属性 不是方法!
console.log(s2.size);
// 清空Set
s2.clear();
console.log(s2);
s2.add(1).add(2).add(3).add(4);//?
// 集合的遍历方式
s2.forEach(val => {
console.log(val)// 1 2 3 4
})
// Set结构 有key 也有value 但是没有下标的概念
// 但是 key和value相同
// console.log(s2.keys(),s2.values());
for (const val of s2) {
console.log(val);
}
for (const k of s2.keys()) {
console.log(k);
}
for (const v of s2.values()) {
console.log(v);
}
for (const entry of s2.entries()) {
console.log(entry[0], entry[1], entry);
}
// 应用场景
// 1. 数组去重
const s3 = new Set([1, 2, 3, 3, 2, 1]);
console.log(s3, s3.size);
// 数组合并,且去重
const s4 = new Set([...[1, 2, 3], ...[1, 2, 3, 4]]);
console.log(s4, s4.size, [...s4]);
// 使用Array.from() 转集合为数组
console.log(Array.from(s4));
// 求两个数组的交集
const a1 = [1, 2, 3, 3, , 4];
const a2 = [2, 3, 5];
const s5 = new Set(a1);
const s6 = new Set(a2);
const res = new Set(a1.filter(val => s6.has(val)));
console.log([...res]);// [2,3]
// 求两个数组的差集
const res2 = new Set(a1.filter(val => !s6.has(val)));
const res3 = new Set(a2.filter(val => !s5.has(val)));
console.log([...res2, ...res3]);// [1, 4, 5]
// TODO WeakSet 数据结构 只能存储对象
const ws1 = new WeakSet();//?
let obj1 = { name: "战三" };
const obj2 = { name: "lisi" };
ws1.add(obj1).add(obj2);//?
console.log(ws1.has(obj1));
// WeakSet 不可以遍历 存储的元素也只是弱引用
// ws1.forEach()
// 存储的元素也只是弱引用
// 弱引用 就是说垃圾回收机制不会考虑我们WeakSet里面引用了这个对象
// 只要原对象的引用断了,这个WeakSet里面记录的该元素也会自动消失
推荐阅读
-
ES6学习笔记(十一)新的数据结构 Set
-
ES6语法--新的数据结构Set/WeakSet那些事
-
ES6新数据结构Set与WeakSet用法分析
-
ES6新特性五:Set与Map的数据结构实例分析
-
ECMAScript6 新的数据结构、Class语法、Proxy和Promise,看完我写的ES6,马上会的,你就是高手
-
ES6新数据结构Set与WeakSet用法分析
-
ES6新特性五:Set与Map的数据结构实例分析
-
ES6新特性-JavaScript中Set和WeakSet类型的数据结构的代码详细介绍
-
ES6新特性-JavaScript中Set和WeakSet类型的数据结构的代码详细介绍
-
es6新数据结构Set只能对数组中基本数据类型的元素去重