es6-set

set

1.set的意义
set类似于数组 但成员的值是唯一的


2.创建set
const s = new Set();//创建一个空set
let set = new Set([1,2,3,4,4,5])//初始化

注意:
1.set内部不会发生类型转换,5和‘5’是不一样的
2.两个对象是不一样的,即使内容一样


3.set的属性
set.constructor:默认就是Set()构造函数
set.size:返回实例成员的数量


4.set的操作方法
在这里插入图片描述

let s=new Set()
s.add(1).add(1).add(2)//Set(2) {1, 2}
s.delete(2)//true
console.log(s)//Set(1) {1}
s.has(1)//true
s.clear()
console.log(s)//Set(0) {}

5.set的遍历方法
(1)keys():返回键名的方法
(2)values() 返回键值的方法
(3)entries() 返回键值对的遍历器
(4)forEach() 使用回调函数遍历每个成员,没有返回值

let set = new Set(["red", "green", "blue"]);
for (let item of set.keys()) {
  console.log(item);
}// red green blue
for (let item of set.values()) {
  console.log(item);
}// red green blue
注意:Set结构实例的默认遍历器生成函数就是 values()方法
for (let item of set) {
  console.log(item);
}// red green blue
for (let item of set.entries()) {
  console.log(item);
}
//['red', 'red'] ['green', 'green'] ['blue', 'blue']
set.forEach((value, key, s) => {
  console.log(s.size);
  console.log(value);
});

6.set的运用
(1)使用set去除数组的重复元素

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

(2)结合filter和map使用

let ns = new Set([1, 2, 3, 4]);
ns = new Set([...ns].map(x => x * 2));
console.log(ns);//Set(4) {2, 4, 6, 8}
ns = new Set([...ns].filter(x => x % 3 == 0));
console.log(ns);//Set(1) {3}

(3)取并集

 let a = new Set([1, 2, 3]);
 let b = new Set([4, 3, 2]);
  //并集
 let union = [...new Set([...a], [...b])];

(4)取交集

 let a = new Set([1, 2, 3]);
 let b = new Set([4, 3, 2]);
 //交集
 let union = [...new Set([...a].filter(x=>b.has(x)));

(5)取差 a中有b中没有的

 let a = new Set([1, 2, 3]);
 let b = new Set([4, 3, 2]);
 //差集
let union=[...new Set([...a].fliter(x=>!b.has(x)))

7.weakSet
(1)weakset和set的区别:

  • weakset中的成员只能是对象
  • weakset中的对象都是弱引用(弱引用不会屏蔽垃圾回收机制,当对象仅被弱引用的时候,是会被回收的)
  • weakset不可遍历
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值