ES6中的Set函数

基本用法

它类似于数组,但是成员的值都是唯一的,没有重复的值。
Set本身是一个构造函数,用来生成 Set 数据结构
Set函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化。

const set = new Set([1,1,2,3,4,5,5])
console.log([...set])// [1,2,3,4,5]
console.log(Array.from(set))// [1,2,3,4,5] Array.from方法可以将类数组,可迭代对象转换数组

const set2=  new Set([1,1,4,5,5])
console.log(set2.size)//3 返回的是去重后的个数
console.log([...set].length)//3 返回的是去重后的个数

const set3=  new Set('ababbc')
console.log([...set3].join(''))// 'abc'

const set4 = new Set(document.querySelectorAll('div'));
console.log(set4.size)//2 返回页面中所有div的个数
操作方法
add()

Set类数组中添加数据,并返回Set对象。如果添加的元素与内部有相同的则添加失败,没有相同的则成功

const set = new Set([1,1,2,3,4,5,5])

console.log(set.add(6))// [1,2,3,4,5,6]
console.log(set.add(5))// [1,2,3,4,5,6]  
delete()

删除指定的值,并返回boolean值,成功返回true,失败返回false

const set = new Set([1,1,2,3,4,5,5])

console.log(set.delete(6))// false
console.log(set.delete(5))// true
clear()

清除Set中类数组的元素,并返回Set对象

 const set = new Set([1,1,2,3,4,5,5])
 console.log(set.clear())//Set(0){}
has()

测试Set中类数组的元素是否有与之相同的,返回的boolean值,有相同的返回true,没有相同的返回false

const set = new Set([1,1,2,3,4,5,5])

console.log(set.has(1))// true
console.log(set.has(0))// false
遍历方法

keys():返回键名的遍历器
values():返回键值的遍历器
entries():返回键值对的遍历器
forEach():使用回调函数遍历每个成员

由于 Set 结构键名和键值是同一个值(key就是value),所以keys方法和values方法的行为完全一致。

let set = new Set([1,1,2,3,4,5,5]);
 
for (let key of set.keys()) {
  console.log(key);
}
// 1
// 2
// 3
// 4
// 5

for (let key of set.values()) {
  console.log(key);
}
// 1
// 2
// 3
// 4
// 5
 
for (let key of set.entries()) {
  console.log(key);
}
// ["1", "1"]
// ["2", "2"]
// ["3", "3"]
// ["4", "4"]
// ["5", "5"]

//forEach方法的参数依次为键值、键名、集合本身 ,Set 结构的键名就是键值,所以前两个参数都是一样的
set.forEach((key, value) => console.log(`${key}:${value}`))
// 1 : 1
// 2 : 2
// 3 : 3
// 4 : 4
// 5 : 5
Set的应用
const arr1 = [12,23,43,51,11,33,33,84,45,12];
const arr2 = [51,11,33,77,66,88,84,12,789]

//并集
console.log([...arr1,...arr2])
//交集
console.log(new Set([...arr1].filter(x => new Set(arr2).has(x))))
//差集
console.log(new Set([...arr1].filter(x => !new Set(arr2).has(x))))
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值