es6 set对象 set方法 set应用数组去重

es6 专栏收录该内容
36 篇文章 1 订阅

定义

类似于数组,集合实现了iterator 接口,所以可以使用 扩展运算符 和 for…of 进行遍历
是一种新的数据结构,它可以接收一个数组或者是类数组对象
Set对象是值的集合,值是惟一的

Set本身是一个构造函数,用来生成set数据结构

let sets = new Set()

Set可以接收一个数组作为参数,用来初始化

let sets = new Set([1,2])
console.log(sets);

在这里插入图片描述
不能直接添加数字

let sets = new Set(2)

在这里插入图片描述

方法

set.size

返回set结构成员数量
类似于数组长度

let sets = new Set()
sets.size;//0

set.prototype.add 添加

添加成员 返回set结构本身

let sets = new Set()
sets.add(1).add('str').add([2,2])

在这里插入图片描述

let sets = new Set()
sets.add(1)
sets.add('str')
sets.add([2,2])
sets.size;//3

在这里插入图片描述

set.prototype.clear

清空set所有成员 没有返回值

let sets = new Set()
sets.add(1)
sets.add('str')
sets.add([2,2])
sets.clear()

在这里插入图片描述

set.prototype.delete(value)

删除元素value 返回布尔值 表示是否删除成功

let sets = new Set()
sets.add(1).add('str').add([2,2])
sets.delete('str'); // true
sets.delete('hh'); // false

在这里插入图片描述

set.prototype.entries()

let sets = new Set()
sets.add(1)
sets.add('str')
sets.add([2,2])
let entries= sets.entries();
for(let i of entries){
    console.log(i)
}
// [1, 1]
// ["str", "str"]
// [[1,2], [1,2]]
console.log(entries,sets.entries())

在这里插入图片描述

set.prototype.forEach

set结构的实例和数组一样,也有forEach方法
forEach(callback,this)
function callback(value, key, set){}
value === key 属性值, set 遍历的对象

let obj = {name:'obj'}
let sets = new Set()
sets.add(1)
sets.add('str')
sets.add([2,2])
sets.forEach(function(value, key, set){
   console.log(value, key, set)
   console.log(this)
},obj)
// 1 1 Set(3) {1, "str", Array(2)}
// str str Set(3) {1, "str", Array(2)}
// [2, 2] [2, 2] Set(3) {1, "str", Array(2)}
// this 指向 obj{name:'obj'}

set.prototype.has(value) 声明对象中是否存在具有给定值的元素Set。

返回一个布尔值 表示该值是否为Set的成员

let sets = new Set()
sets.add(1)
sets.add('str')
sets.has('str')//true

set.prototype.keys()

let sets = new Set()
sets.add(1).add('str').add([2,2])
console.log(sets.keys())

在这里插入图片描述

let keys= sets.keys();
for(let i of keys){
	console.log(i)
}
// 1
// 'str'
// [1,2]

set.prototype.values()

返回一个新Iterator对象,该对象按插入顺序包含该对象中每个元素的值

let sets = new Set()
sets.add(1).add('str').add([2,2])
console.log(sets.values())

和keys一样
在这里插入图片描述

let values = sets.values();
for(let i of values){
	console.log(i)
}
// 1
// 'str'
// [1,2]

set[Symbol.iterator]()

访问遍历器iterator

let Sy = sets[Symbol.iterator]()
console.log(Sy)

在这里插入图片描述

set对象应用

帮助我们数组去重

let numbers = [1,1,2,3,2,1,5,8,8,96,12,undefined,null,'']
let numberSet = new Set(numbers)
console.log(numberSet)

在这里插入图片描述

let uniqunNumber = [...numberSet];
//[1, 2, 3, 5, 8, 96, 12, undefined, null, ""]

交集

求重复部分

let numbers = [1,1,2,3,2,1,5]
let numbers2 = [1,1,5,2]
let res = [...new Set(numbers)].filter(item=>{
	let s2 = new Set(numbers2)
	return s2.has(item)
})
// let res = [...new Set(numbers)].filter(item => new Set(numbers2).has(item))
console.log(res) // [1, 2, 5]

并集

数组合并

let numbers = [1,1,2,3,2,1,5]
let numbers2 = [1,1,5,2]
let s = new Set([...numbers,...numbers2])
[...s] // [1,2,3,5]

差集

A有B没有

let numbers = [1,1,2,3,2,1,5]
let numbers2 = [1,1,5,2]

let res = [...new Set(numbers)].filter(item => !new Set(numbers2).has(item))
// [3]
let res2 = [...new Set(numbers2)].filter(item => !new Set(numbers).has(item))
// []
  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值