ES6中的Set集合和Map集合

Set集合

Set集合是一种没有重复元素、有序列表,一般的我们不会像访问数组一样逐一的访问每个元素,通常的做法是检测给定的值在某个集合中是否存在;通过Set集合可以快速访问其中的数据,更有效的追踪各种离散值

ES6中Set集合的使用

1.创建Set

const s1 = new Set();

2.添加元素

s1.add(1)
s1.add(2)
s1.add(3)
s1.add(1)   //无效的
console.log(s1)

3.删除元素

console.log(s1.delete(1))//true
console.log(s1.delete(10))//flase

查:has

console.log(s1.has(1))//truef
console.log(s1.has(10))//flase

set长度:size(只能读,不能改)

console.log(s1.size)

遍历
for of

 for(const item of s1){
	console.log(item)
	}

重写的实例方法 forEach

s1.forEach((item,index,s) => {
		(item,index,s)
	})
//index 不是下标,set集合没有下标
//forEach中的第一个参数的值和第二个参数的值是相同的,都表示set中的每一项
console.log(item,index,s)
WeakSet

使用该集合,可以实现和set一样的功能但也有一定的限制

1.内部存储地址不会影响垃圾回收
2. 只能添加对象
3. 3.不能遍历,不是一个可迭代的对象,没有size属性,没有foreach方法

let obj = {
	name : "jack",
	age : 18
	}
	const set = new WeakSet();
	set.add(obj);
	obj = null;
	console.log(set)

Map集合

ES6中的Map类型是一种存储着许多键值对的有序列表。其中最为重要的是:Map集合的键名和值支持任意类型的数据

对象存储的问题

1.键名只能是字符串
2. 获取数据的数量的时候不方便
3. 键名容易和原型上的名称发生冲突

ES6中Map集合的使用

1.创建

// 创建map对象
let map = new Map(); 
// set() 设置键值对
map.set('title', 'map title');
// get() 获取键对应的值, 不存在则返回undefined
map.get('title'); // map title

Map集合内支持所有的数据类型,所以我们可以这么做:

let map  = new Map();
let obj1 = {};
let obj2 = {};
map.set(obj1, 1);
map.set(obj2, 2);
// 获取值
map.get(obj1); // 1
map.get(obj2); // 2

Map集合的方法

let map = new Map();
// has(key): 检测键名是否存在
map.has('title');
// delete(key): 删除指定的键名和其值
map.delete('title');
// clear(): //清空所有键值对
map.clear();

遍历

for(const item of map){
	console.log(item[0],item[1])
	}

forEach

map.forEach((value,key,map) => {
		 console.log(value,key,map)
		// value 值
		// key 键
		// map 对象本身
	})

WeakMap

1.内部存储地址不会影响垃圾回收
2.键名只能对象
3.不能遍历,不是一个可迭代的对象,没有size属性,没有foreach方法

let obj = {
		name : "jack",
		age : 18
	}
	const map = new WeakMap();
	map.set(obj,123);
	obj = null;
	console.log(map)  
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值