【es6】教程 数据结构set和Map

es6,新的数据结构set

set集合,类似于数组,成员值是唯一的
1, 实现了iterator接口,可以使用扩展运算符和for…of 进行遍历
2,set 本质是对象
3,默认的 Iterator 接口部署在数据结构的Symbol.iterator属性,或者说,一个数据结构只要具有Symbol.iterator属性,就可以认为是“可遍历的”
4,Set结构不能接收重复数据的特点,(常常用来数组去重,同时利用es6的延展运算符)
size 返回集合的元素个数
add 增加一个新记录,返回当前集合
delete 删除,返回boolean值
has 检测集合中是否包含某个元素,返回boolean值
声明一个set对象
let s =new Set();//可接受可迭代数据,数组也行
let s2 =new Set([1,2,3,4,5]);
console.log(s2)//Set(5) {1, 2, 3, 4, 5},会自动去除数组括号
s2.add(6);
s2.delete(3);
//检测
console.log(s2.has(0))//false
//清空
s2.clear()

for (let v of s2){
	console.log(v)
}
set 实践

数组去重

			let arr =[1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1]
			let arr1 =[1,2,3,4,5,4,3,2,1]
			//给数组添加set集合,使之可以操作set里面的方法
			let arr0 = new Set(arr1)
			console.log(arr0,"添加set")//类型为object
			
			//去重,借助扩展运算符
			let arr3= [...new Set(arr)]
			console.log(arr3,"去重")
			//求交集
			let arr4=arr3.filter(item=>new Set(arr1).has(item))
			console.log(arr4,"交集")
			
			//求并集,先合并
			let arr5=[...arr,...arr1]
			// 再去重
			let arr6=[...new Set(arr5)]
			// 简单写法
			let arr7=[...new Set([...arr,...arr1])]
			console.log(arr6,arr7,"并集")
			
			//差集
			let arr8=[...new Set(arr)].filter(item=>!(new Set(arr1).has(item)))
			console.log(arr8,"差集")

es6,新的数据结构Map

升级版的对象,以前的key只能是字符串,现在可以是对象
键值对的集合,但是,键的范围不限于字符串,各种类型的值,包括对象都可以当做键
默认的 Iterator 接口部署在数据结构的Symbol.iterator属性,或者说,一个数据结构只要具有Symbol.iterator属性,就可以认为是“可遍历的”

Map字典是以[键,值]的形式存储

size 返回Map的元素个数
add 增加一个新元素,返回当前Map
get 返回键名对象的键值
delete 删除,返回boolean值
has 检测Map中是否包含某个元素,返回boolean值
claear 清空集合,返回undefined
声明一个Map对象

在这里插入图片描述

//声明Map
			let obj = new Map();
			//添加记录
			obj.set('键', "值")
			obj.set('键1', "值1")
			//键可以是对象
			let keys = {
				"对象": "对象值"
			}
			//值可以为数组
			obj.set(keys, ['对象值1', '对象值2', '对象值3'])
			console.log(obj)
			//遍历,虽然obj为对象,但因为 Iterator 接口,所以是可遍历的
			for (let i of obj) {
				console.log(i)//打印的是数组
			}

			//删除
			obj.delete('键1')
			console.log(obj)

			//获取
			let obj1 = obj.get('键')
			console.log(obj1) //值

			//Map元素个数
			let obj2 = obj.size
			console.log(obj2)

			//清空
			obj.clear()
			console.log(obj)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值