es6中Set、Map、WeakSet和WeakMap的区别

本文介绍了JavaScript中的Set、WeakSet、Map和WeakMap数据结构,它们的特点和用途。Set用于存储唯一值,不考虑类型转换;WeakSet仅存储对象且弱引用,利于垃圾回收。Map是键值对集合,键值可以是任意类型;WeakMap的键必须是对象且为弱引用,不支持遍历。这些数据结构在处理数据和管理对象引用时非常有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Set
    Set 类似于数组,本身是一个构造函数,用来生成 Set 数据结构,成员值是唯一且无序的,常用于数组去重
    Set 函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化
    Set 数据结构允许存储任何数据,无论是基本数据类型值或者是对象引用
    Set 加入值的时候,不会发生类型转换,所以5"5"是两个不同的值。Set 内部判断两个值是否不同,使用的算法叫做“Same-value-zero equality”,它类似于精确相等运算符(===),主要的区别是向 Set 加入值时认为NaN等于自身,而精确相等运算符认为NaN不等于自身。另外,两个对象总是不相等的。
 

const s = new Set()
// 或
const s = new Set([1,2,3,3,5,4,6])
// Array.from() 方法可以将 Set 结构转为数组
console.log(Array.from(s)) // [1, 2, 3, 5, 4, 6]
// 使用扩展运算符(...)
console.log(...[s]) // [1, 2, 3, 5, 4, 6]
  • 属性和方法
    size 返回Set实例的成员总个数
    add() 添加值,返回 Set 结构本身
    delete() 删除值,返回一个布尔值,表示删除是否成功
    has() 返回一个布尔值,表示该值是否为 Set 的成员
    clear() 清除所有成员,没有返回值
    const s = new Set()
    s.add(8)
    s.add(9)
    s.size // 2
    
    s.delete(8)
    s.size // 1
    
    s.has(8) // false
    s.has(9) // true
    
    s.clear()
    s.size // 0
    

  • 遍历操作
    Set.prototype.keys():返回键名的遍历器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嫣嫣细语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值