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

简介: 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)
目录
相关文章
|
6月前
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可以是任意类型且有序,与对象的字符串或符号键不同;Set存储唯一值,无重复。两者皆可迭代,支持for...of循环。Map有get、set、has、delete等方法,Set有add、delete、has方法。示例展示了Map和Set的基本操作。
103 3
|
3月前
|
Java
【Java集合类面试二十三】、List和Set有什么区别?
List和Set的主要区别在于List是一个有序且允许元素重复的集合,而Set是一个无序且元素不重复的集合。
|
29天前
|
存储 JavaScript 前端开发
Set、Map、WeakSet 和 WeakMap 的区别
在 JavaScript 中,Set 和 Map 用于存储唯一值和键值对,支持多种操作方法,如添加、删除和检查元素。WeakSet 和 WeakMap 则存储弱引用的对象,有助于防止内存泄漏,适合特定场景使用。
|
1月前
|
存储 缓存 Java
【用Java学习数据结构系列】HashMap与TreeMap的区别,以及Map与Set的关系
【用Java学习数据结构系列】HashMap与TreeMap的区别,以及Map与Set的关系
31 1
|
3月前
|
存储 Python
set() 和 freezeset() 之间有什么区别?
【8月更文挑战第29天】
27 6
|
3月前
|
Python
python中set和frozenset方法和区别
python中set和frozenset方法和区别
|
3月前
|
Java
【Java集合类面试二十二】、Map和Set有什么区别?
该CSDN博客文章讨论了Map和Set的区别,但提供的内容摘要并未直接解释这两种集合类型的差异。通常,Map是一种键值对集合,提供通过键快速检索值的能力,而Set是一个不允许重复元素的集合。
|
3月前
|
存储 Java 索引
|
3月前
|
Kubernetes 容器 Perl
在K8S中,Replica Set和Replication Controller之间有什么区别?
在K8S中,Replica Set和Replication Controller之间有什么区别?
|
5月前
|
存储 Python
Python中list, tuple, dict,set的区别和使用场景
Python中list, tuple, dict,set的区别和使用场景
166 2