js中set的使用

文章介绍了JavaScript中的Set数据结构,强调了其不允许重复元素的特点,并通过示例展示了Set与Array的区别。接着,讨论了如何创建和添加元素到Set中,以及如何利用Set进行数组去重。此外,还提到了WeakSet,它是只存储对象且具有弱引用特性的数据结构。

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

1.Set数据的特点
Set有点类似于Array数组,但是和数组的区别是Set的元素不能重复。

先不考虑Set的创建方法,通过案例来演示Set和Array数组的区别。

分别给Set和数组添加4个元素,其中元素10重复

const set = new Set([10, 10, 12, 14])
console.log(set)
 
const array = [10, 10, 12, 14]
console.log(array)


可以看到Set中只有3个值互不相同的元素,而Array数组中有4个元素。 

 

2.Set的创建和添加元素


我们需要通过Set的构造函数创建Set(没有字面量创建的方式)。

可以先创建一个空的Set对象,随后使用add方法添加元素;
也可以直接添加元素;
// 方式一:创建Set对象,使用add方法添加元素
 
const obj = {name: "aaa"}
const set1 = new Set()
set1.add(10)
set1.add(10)
set1.add(12)
set1.add(14)
set1.add(obj)
console.log(set1)
 
// 方式二: 直接添加元素
 
const set2 = new Set([10, 10, 12, 14, {name: "zzz"}])
console.log(set2)

可以看到两种方法都创建了4个元素的Set,并且对象也是可以作为元素的。

 

3.Set常用功能之数组去重


如果一个数组有重复的元素,使用Set就能很快去除重复的元素。当然,用之前的方法也是可以去重的,先看之前怎么实现去重的,再学习使用Set怎么去重。

3.1.普通方法数组去重
使用普通方法去除一个数组中重复的元素,代码也不会很多,但会稍微麻烦一点点。

const array = [10, 10, 12, 12, 12, 15, 17] //有几个重复的元素
const ordinaryArray = []
for(let item of array){
    if(!ordinaryArray.includes(item)){
        ordinaryArray.push(item)
    }
}
 
console.log(ordinaryArray)
创建一个新的数组 ordinaryArray 用来存放元素
使用for...of遍历array
判断在ordinaryArray数组中是否包含array元素,如果没有包含就把array元素放到ordinaryArray数组里面
3.2.Set方法数组去重 
普通方法去重好像也可以接受,不是很麻烦,下面看一下使用Set怎么去重。

      const array = [10, 10, 12, 12, 12, 15, 17]
      const set = new Set(array)
      const newArray = Array.from(set)
      const newArray1 = [...set]
      console.log(set)
      console.log(newArray)
      console.log(newArray1)
创建一个array为参数的Set对象
将创建的Set对象实例转为数组


 Array.from()和展开运算符(...)都可以将Set转化成数组

 

4.Set的常见方法


Set常见的属性:

size:返回Set中元素的个数;

Set常用的方法:

add(value):添加某个元素,返回Set对象本身;

delete(value):从set中删除和这个值相等的元素,返回boolean类型;

has(value):判断set中是否存在某个元素,返回boolean类型;

clear():清空set中所有的元素,没有返回值;

forEach(callback, [, thisArg]):通过forEach遍历set;

5.WeakSet使用


和set类似的另外一个数据结构称之为WeakSet,同样是内部元素不能重复的数据结构。

和set的区别

区别一:WeakSet中只能存放对象类型,不能存放基本数据类型;
区别二:WeakSet对元素的引用是弱引用,如果没有其他引用对某个对象进行引用,那么GC可以对该对象进行回收
WeakSet常用的方法

add(value):添加某个元素,返回WeakSet对象本身;
delete(value):从WeakSet中删除和这个值相等的元素,返回boolean类型;
has(value):判断WeakSet中是否存在某个元素,返回boolean类型; 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值