JS数据结构-Set集合创建Set常⽤Set⽅法Set
  ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯⼀的,没有重复的值。
  很多时候我们把Set叫做集合,但是,Set可以是集合,集合不⼀定是Set。
  特性:唯⼀性=>不重复=>能够对数据进⾏去重操作。
注:集合去重,是全等匹配,===。
创建Set
  Set 本⾝是⼀个构造函数,调⽤构造函数⽤来⽣成 Set 数据结构。
    关键词  标识符 = new Set();
  例  let    i  = new Set();
  Set 函数可以接受⼀个数组(或类似数组的对象)作为参数,⽤来进⾏数据初始化。
      let i = new Set([1, 2, 3, 4, 4]);  会得到  set{1, 2, 3, 4,}
注:如果初始化时给的值有重复的,会⾃动去除。
  集合并没有字⾯量声明⽅式。
Set的属性
  常⽤的属性就⼀个:size   返回 Set 实例的成员总数。
  let s = new Set([1, 2, 3]);
  console.log( s.size ); // 3
Set的⽅法
  Set 实例的⽅法分为两⼤类:操作⽅法(⽤于数据操作)和遍历⽅法(⽤于遍历数据)。
  操作⽅法:
      add(value)    添加数据,并返回新的 Set 结构
      delete(value)   删除数据,返回⼀个布尔值,表⽰是否删除成功
      has(value)    查看是否存在某个数据,返回⼀个布尔值
      clear()      清除所有数据,没有返回值
let set = new Set([1, 2, 3, 4, 4]);
// 添加数据 5
let addSet = set.add(5);
console.log(addSet); // Set(5) {1, 2, 3, 4, 5}
// 删除数据 4s
let delSet = set.delete(4);
console.log(delSet); // true
// 查看是否存在数据 4
let hasSet = set.has(4);
console.log(hasSet); // false
// 清除所有数据
set.clear();
console.log(set); // Set(0) {}
  遍历⽅法:
    Set 提供了三个遍历器⽣成函数和⼀个遍历⽅法。
      keys()    返回⼀个键名的遍历器
      values()   返回⼀个键值的遍历器
      entries()   返回⼀个键值对的遍历器
      forEach()   使⽤回调函数遍历每个成员
let color = new Set(["red", "green", "blue"]);
for(let item of color.keys()){
console.log(item);
}
// red
// green
// blue
for(let item of color.values()){
console.log(item);
}
// redjs合并两个数组
// green
/
/ blue
for(let item ies()){
console.log(item);
}
// ["red", "red"]
// ["green", "green"]
// ["blue", "blue"]
color.forEach((item) => {
console.log(item)
})
// red
/
/ green
// blue
与数组相关操作
  Set 转数组:
    由于扩展运算符...,内部的原理也是使⽤的 for-of 循环,所以也可以⽤于操作 Set 结构。    例如将 Set 结构转换为数组结构:
let color = new Set(["red", "green", "blue"]);
let colorArr = [...color];
  数组去重:
    扩展运算符和 Set 结构相结合,就可以去除数组的重复成员。
let arr = [1,2,2,2,2,"2",24,5,6];
//step1:数组转集合
let set = new Set(arr);//已经去掉重复值,当前不是数组,⽽集合  Set { 1, 2, '2', 24, 5, 6 }
//step2:集合转数组
arr = [...set];//[ 1, 2, '2', 24, 5, 6 ]
扩展
let num1 = new Set([1, 2, 3, 4]);
let num2 = new Set([3, 4, 5, 6]);
//并集
let union = new Set([...num1,...num2]);
console.log(union);//Set { 1, 2, 3, 4, 5, 6 }
//交集
let intersect = new Set(
[...num1].filter(x=> num2.has(x))
)
console.log(intersect); //Set { 3, 4 } //差集
let difference = new Set(
[...num1].filter(x => !num2.has(x)) )
console.log(difference); //Set { 1, 2 }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。