更多的集合类型-set集合

131 阅读2分钟

概述

一直以来,JS只能使用数组和对象来保存多个数据,缺乏像其他语言那样拥有丰富的集合类型。因此,ES6新增了两种集合类型(set 和 map),用于在不同的场景中发挥作用。

集合:用来保存多个数据的数据结构。

set用于存放不重复的东西

如何使用

  1. 如何创建set集合
new Set(); // 创建一个没有任何内容的set集合

new Set(iterable); // 创建一个具有初始内容的set集合,内容来自于可迭代对象每一次迭代的结果

举例:

const s1 = new Set([1, 2, 3])
const s2 = new Set([1, 1, 2, 2, 3])
const s3 = new Set('aacbb')
console.log(s1); // {1, 2, 3}
console.log(s2); // {1, 2, 3}
console.log(s3); // {'a', 'c', 'b'}
  1. 如何对set集合进行后续操作
  • add(数据) 添加一个数据到set集合末尾,如果数据已存在,则不进行任何操作
    • set使用Object.is的方式判断两个数据是否相同(判断引用地址是否一样,不是严格相等),但是,针对+0和-0,set认为是相等
  • has(数据): 判断set中是否存在对应的数据
  • delete(数据):删除匹配的数据,返回是否删除成功
  • clear():清空整个set集合
  • size: 获取set集合中的元素数量,只读属性,无法重新赋值
  1. 如何与数组进行相互转换

    const s = new Set([x,x,x]);
    // set本身也是一个可迭代对象,每次迭代的结果就是每一项的值
    const arr = [...s];
    

    应用:

    1. 数组去重 const result = [...new Set(arr)]
    2. 字符串去重 const result = [...new Set(str)].join("");
  2. 如何遍历 1). 使用for-of循环 set集合本身是可迭代对象 2). 使用set中的实例方法 forEach 注意:set集合中不存在下标,因此forEach中的回调的第二个参数和第一个参数是一致的,均表示set中的每一项