JS中Set、WeakSet、Map 和 WeakMap区别
2023-12-19 23:56:33
    		ES6引入的四种新的数据结构,它们各自有不同的特性和用途。
-  
Set:
Set是一种集合数据结构,成员的值都是唯一的,没有重复的值。- 它可以包含任何类型的原始值或对象引用。
 Set是可迭代的,可以使用for...of循环遍历。- 提供了
add、delete、has等方法来操作集合。 
例:
let set = new Set(); set.add(1); set.add(2); set.add(3); for (let value of set) { console.log(value); // 1, 2, 3 } -  
WeakSet:
WeakSet与Set类似,但其成员都是对象,并且对对象的引用是弱引用。- 如果一个对象没有被其他引用所指向,那么它可能会被垃圾回收机制回收,
WeakSet不会阻止这个过程。 WeakSet是不可迭代的,但提供了add、delete、has等方法。
例:
let weakSet = new WeakSet(); let obj = {}; weakSet.add(obj); console.log(weakSet.has(obj)); // true -  
Map:
Map是一种映射数据结构,类似于对象,但是键可以是任意类型的值(包括对象)。- 它是可迭代的,可以使用
for...of循环遍历。 - 提供了
set、get、has、delete等方法来操作映射。 Map中的键值对是有序的,按照添加的顺序排列。
例:
let map = new Map(); map.set('name', 'John'); map.set('age', 30); for (let [key, value] of map) { console.log(key + ': ' + value); // name: John, age: 30 } -  
WeakMap:
WeakMap与Map类似,但其键只能是对象(null除外),并且对对象的引用是弱引用。- 如果一个对象没有被其他引用所指向,那么它可能会被垃圾回收机制回收,
WeakMap不会阻止这个过程。 WeakMap是不可迭代的,但提供了set、has、delete等方法。
例:
let weakMap = new WeakMap(); let obj = {}; weakMap.set(obj, 'value'); console.log(weakMap.has(obj)); // true 
总结:
Set和WeakSet主要用于存储唯一值,区别在于Set可以存储任何类型的值,而WeakSet只能存储对象,并且对对象的引用是弱引用。Map和WeakMap主要用于存储键值对,区别在于Map的键可以是任意类型的值,而WeakMap的键只能是对象,并且对对象的引用是弱引用。
    			文章来源:https://blog.csdn.net/m0_37577465/article/details/133337967
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
    	本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!