浅谈Set (2021-08-22)

ES6的新数据结构,Set类似于数组,但其中的数据具有唯一性。

一、创建方式:

    1、let mySet = new Set()(通过构造函数创建)

    2、let mySet = new Set(array)(通过接收数组、伪数组参数创建)

    3、let mySet = new Set('daisanlang')(通过接收字符串参数创建)

    4、待补充……

    注:在Set中NaN只有一个,即在Set中 NaN=NaN,但在JS中      NaN===NaN = false。

二、主要API:

    1、mySet.size——返回Set中的成员个数

    2、mySet.add()——向Set中添加某个元素,返回Set结构本身

    3、mySet.delete()——在Set中删除某个元素,返回一个布尔值。

    4、mySet.has()——判断Set中是否包含某个元素,返回一个布尔值。

    5、mySet.clear()——清空Set,无返回值

    6、mySet.key()——返回键名的遍历器

    7、mySet.values()——返回键值的遍历器

    8、mySet.entries()——返回键值对的遍历器

    6、mySet.forEach()——遍历每个成员

三、遍历

    1、for( let item of mySet.keys() ){ console.log(item)}

    2、for( let item of mySet.values() ){ console.log(item)}

    3、for( let item of mySet.entries() ){ console.log(item)}

    4、mySet.forEach( ( value , key ) => console.log( key + '  :  ' + value ))

    注:由于Set数据只有键值没有键名,所以其key和value是相同的。

四、应用:

    1、数组去重:

        ①、let newArr = [...new Set(array)](扩展运算符可以将Set转换为数组)

        ②、let newArr = Array.from(new Set(array))(from可以将拥有 length 属性的对象或可迭代的对象转换为数组,不改变原数据)

    2、数组并集:

        ①、let mySet = new Set([...array1,...array2])    

    3、数组交集

        ①、let mySet = new Set(array1.filter( item => { return !new Set(array2).has(item)}))

    4、字符串去重

        ①、let newStr = [...new Set(str)].join('')

文中的错误和不足欢迎各位道友指正和补充,另外下方是阮一峰老师详解Set的文章链接。

阮一峰老师详解ES6新数据结构:Set

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容