ES6——Set

本文详细介绍了ES6中的Set数据结构,包括如何使用add()添加数据、不同类型转换如数组转Set、Set转数组及注意事项。重点讨论了Set在数组去重、并集合并等方面的作用,并列举了各种遍历方法,如keys()、values()和forEach()等。同时提到了weakSet和weakMap,它们在内存管理上的特殊性。

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


set集合里面可以存储 任意类型值,但是这些值都是 唯一

【特殊值】: NANundefined+0 -0只能存一个

    console.log(0 === -0); //true
    console.log(undefined === undefined);  //true
    console.log(NaN === NaN); //false

在这里插入图片描述

一、add() 添加数据

    //set集合在写的时候 需要实例化
    let setarr=new Set();
    //使用add方法 添加数据
    setarr.add(1);
    setarr.add("a");
    setarr.add(function () {});
    setarr.add({a:1});
    setarr.add({a:1});  //因为是引用类型 其实存的并不是一个值

在这里插入图片描述

二、类型转换

1.数组array转换为Set集合

    let a=[1,2,3,3,2,1];
    let set=new Set(a);
    console.log(set);

在这里插入图片描述

2.Set转数组

    let arr= [...set];
    console.log(arr);

在这里插入图片描述

3.String 转 Set

字符串,相当于类数组。有的人认为是值类型,也有人认为是引用类型。

    var myset=new Set('hello');   
    console.log(myset);

在这里插入图片描述

4.Set 转 String

集合先转为数组,再进行拼接

    var str= [...myset].join("");
    console.log(str);  //helo

【注意】不能使用toString

【注意】Set 中 toString 方法是不能将 Set 转换成 String的

    let mystr=myset.toString(); 
    console.log(mystr);  //[object Set]

JSON对象直接toString()也是这个格式,要用JSON.parse来转

JSON 数据类型

三、Set 对象作用

1.数组去重

var mySet = new Set([1, 2, 3, 4, 4]);
[...mySet]; // [1, 2, 3, 4]

2.并集 数组合并

    let s1=new Set([1,2,3]);
    let s2=new Set('abcde');
    let s3=new Set([...s1,...s2]);
    console.log(s3);

在这里插入图片描述

3.add添加 size返回长度

    let set=new Set([0]);
    set.add(1);
    set.add(2);
    set.add(3);
    console.log(set); //Set(4) {0, 1, 2, 3}
    console.log(set.size); //4

4.has 监测值是否存在

    console.log(set.has(2)); //true

5.delete 删除某个值

    console.log(set.delete(2)); //true
    console.log(set); //Set(3) {0, 1, 3}

6.clear 清除所有成员

    console.log(set.clear());  //undefined
    console.log(set);//Set(0) {}

四、Set 遍历方法

在这里插入图片描述
set中存在迭代器,故可遍历

1.keys() 返回键名的遍历器

因为set没有键名,故返回它本身

    let set=new Set([1,2,3,4,5,6]);
    console.log(set.keys());

在这里插入图片描述

2.values()

console.log(set.values()); //SetIterator {1, 2, 3, 4, 5, …}

3.entries()

console.log(set.entries());

在这里插入图片描述

4.forEach()

    set.forEach(function (value,key,arr) {
        console.log(value, key, arr);
    })

在这里插入图片描述

5.for…of

    for(let key of set.values()){
        console.log(key);
    }

在这里插入图片描述

    for(let [key,value] of set.entries()){
        console.log(key,value);
    }

在这里插入图片描述

weakSet weakMap

和set集合 map集合 具有功能相同的两个集合
weakSet(只接受对象做值) weakMap(只接受对象做key)
一旦不再需要,对象被清除,js垃圾回收机制回默认回收(set map不会)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

致可乐

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

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

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

打赏作者

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

抵扣说明:

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

余额充值