Set

Set的基本使用

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。

  返回的结果是一个set集合,和数组对象都不一样,是一个新的数据集合

设置初始值的方法有两种,第一中是通过add()方法进行设置的,第二种就是初始化的时候内部设置数组

let set = new Set(["a","b","c"]);
console.log(set);

  注意:如果我们想要使用初始化复制的状态,赋值必须是数组,不可以是对象等等

set内部的赋值不能有重复

let set = new Set();
// 插入数据
set.add("a");
set.add("a");
set.add("a");
set.add("b");
set.add("b");
set.add("b");
set.add("c");
set.add("c");
set.add("c");
console.log(set);

 也可以连续打点使用

 Set的方法

插入值使用的是add方法

向Set加入值的时候,不会发生类型转换,所以1和"1"是两个不同的值。

 删除值使用的是delete方法

内部想删除哪个数据就填哪个数据

let set = new Set([1,2,3,4,5]);
set.delete(3)
console.log(set);

 检测内部是否有该值

let set = new Set([1,2,3,4,5]);
console.log(set.has(3)); 

 求集合的长度

判断长度不是length,是size

 清空集合内部所有的数据

let arr = new Set([1,2,3,4,5]);
arr.clear()
console.log(arr);

  set的循环

map和set是可以使用for..of进行遍历,是因为map和set都是iterator接口机制

let arr = new Set([1,2,3,4,5]);
for(let item of arr) {
  console.log(item);
}

 可以使用keys和values进行变量来看一下set集合key和value分别是什么

let arr = new Set([1,2,3,4,5]);
for(let item of arr.keys()) {
  console.log(item); 
}
for(let item of arr.values()) {
  console.log(item); 
}

 set集合的key和value是相同的

 set也可以用forEach去遍历

let arr = new Set([1,2,3,4,5]);
arr.forEach((item,index)=>{
  console.log(item,index);
})

 

 

 set也可以使用entries方法去遍历

let arr = new Set([1,2,3,4,5]);
for(let item of arr.entries()) {
  console.log(item);
}

Set转换为数组

由于set不能使用数组的方法,虽然forEach可以用,但是仅仅是forEach方法,其他是不可以的,比如map、filter

下面的方法是错误的,因为map是数组的方法,set不能用

let arr= new Set([1,2,3,4,5]);
arr= arr.map((item)=>{
  return item * 2
})

 

如果想操作set中的数据,需要将set转换为数组

如何转换?'…'扩展运算符是有iterator接口机制,所以set就可以使用'…'运算符

set转换为数组

let arr = new Set([1,2,3,4,5]);
console.log([...arr]);

 

 可以将set的内部值统一乘以2

let arr = new Set([1,2,3,4,5]);
console.log(new Set([...arr].map(item=>item*2)));

 

 先将set通过…运算符转换为普通数组,然后再用map方法

可以利用set和数组的各自特点做去重,比如数组的去重

let arr = [1,1,1,2,2,2,3,3,3,4,4]
let arr2 = [...new Set(arr)];
console.log(arr2);

 

posted @ 2021-10-26 09:20  keyeking  阅读(281)  评论(0编辑  收藏  举报