new Set与...new Set()区别

1. Set方法使用

方法描述
add添加某个值,返回Set对象本身。
clear删除所有的键/值对,没有返回值。
delete删除某个键,返回true。如果删除失败,返回false。
forEach对每个元素执行指定操作。
has返回一个布尔值,表示某个键是否在当前 Set 对象之中。

2. new Set()

new Set()本质,将数组/字符串转化为对象,且去重

//    数组转对象且去重
let arr = [1,2,3,3,1,4];
    let arrToObj = new Set(arr);
    console.log("arrToObj",arrToObj);//{ 1, 2, 3, 4 }
//    字符串转对象且去重
    let strToObj = new Set("ababbc");
    console.log("strToObj",strToObj);//{ 'a', 'b', 'c' }

3. …new Set()

去重并转化为数组输出

//数组去重,生成新数组
    let noDouble =  [...new Set(arr)]; 
    console.log("noDouble",noDouble)// [1, 2, 3, 4]

//字符串去重	且转化为字符串
    let str = [...new Set('ababbc')]; // "abc" 字符串去重
    console.log("str",str)//abc

4.特殊操作

4.1 数组并集

    let array1 = new Set([1, 2, 3]);
    let array2 = new Set([4, 3, 2]);
    let unionObj = new Set([...array1, ...array2]); // {1, 2, 3, 4}
    console.log("unionObj",unionObj)
    let unionArray = [...new Set([...array1, ...array2])]; // [ 1, 2, 3, 4 ]
    console.log("unionArray",unionArray)

4.2 数组交集

    let array1 = new Set([1, 2, 3]);
    let array2 = new Set([4, 3, 2]);
    let intersectionObj = new Set([...array1].filter(x => array2.has(x))); // { 2, 3 }
    console.log("intersectionObj",intersectionObj)
    let intersectionArray = [...new Set([...array1].filter(x => array2.has(x)))]; // [ 2, 3 ]
    console.log("intersectionArray",intersectionArray)

4.3 数组差集

    let array1 = new Set([1, 2, 3]);
    let array2 = new Set([4, 3, 2]);
    let diffObj = new Set([...array1].filter(x => !array2.has(x))); // { 1 }
    console.log("diffObj",diffObj)
    let diffArray = [...new Set([...array1].filter(x => !array2.has(x)))]; // [ 1 ]
    console.log("diffArray",diffArray)
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
【...new Set】是一种将Set对象转换为数组的常用方法。通过使用扩展运算符(...)和新建一个Set对象,我们可以将Set对象中的唯一值提取出来并以数组的形式返回。这个方法常用于数组去重,可以快速、简洁地去除重复的元素。例如,使用【...new Set(arr)】可以将一个数组【arr】中的重复元素去除,并返回一个只包含唯一值的新数组。同样地,它也可以用于字符串去重,可以将一个字符串中的重复字符去除,并返回一个由唯一字符组成的新字符串。【1】【2】【3】<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [new Set() 用法+拓展](https://blog.csdn.net/weixin_44251670/article/details/123735625)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [ES6基础之——[...new Set()]](https://blog.csdn.net/qq_42363090/article/details/108467633)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

乾复道

与君共勉

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

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

打赏作者

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

抵扣说明:

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

余额充值