es6 Set Map

Set

ES6 提供了新的数据结构 Set(集合)。它类似于数组,但是成员的值都是唯一的,没有重复的值。
Set本身是一个构造函数,用来生成 Set 数据结构。集合实现了 iterator 接口,所以可以使用扩展运算符和for…of…进行遍历,集合的属性和方法:
1)size 返回集合的元素个数
2)add 增加一个新元素,返回当前集合
3)delete 删除元素,返回boolean值
4)has 检测集合中是否包含某个元素,返回boolean值
5)clear() 清空

//声明一个set
let s = new Set();
let s1 = new Set(["111","222","333","444","555"]); //输出 "111","222","333","444","555"
let s2 = new Set(["111","111","333","444","555"]); //输出"111","333","444","555"  自动去重
console.log(s1);
console.log(s2);
//输出集合元素个数
console.log(s2.size);	//4
//新增元素
s2.add("666");
console.log(s2) // 输出"111","333","444","555","666"
//删除元素
s2.delete("333");
console.log(s2); // 输出"111","444","555","666"
//检测元素
console.log(s2.has("444")); // 输出true
//由于集合使用了iterator接口,故可以用扩展运算符和for...of...进行遍历
for (let v of s2){
	console.log(v); // 输出 111,444,555,666
}
//清空集合
s2.clear();
console.log(s2);  // 集合已清空,无元素

Set实践

//定义一个数组
let arr = [1,2,3,4,5,4,3,2,1];
//1.数组去重
let result = [...new Set(arr)]; //new Set(arr)将数组转为类数组,此时里面的元素是不重复的,再使用...扩展运算符,将类数组转为数组
console.log(result); //输出去重后的数组 arr[1,2,3,4,5]

//2.求arr和arr2的交集
let arr2 = [4,5,6,5,6];
//先使用new Set(arr)将arr数组转化为没有重复元素的类数组,再使用扩展运算符...将类数组转化为数组,再使用.filter返回一个满足条件的新数组
/方法1
let result = [...new Set(arr)].filter(item => { 
	let s2 = new Set(arr2); // 4 5 6
	if(s2.has(item)){
		return true;
	}else{
		retuen false;
	}
});
console.log(result);	//4,5
//方法2
let result = [...new Set(arr)].filter(item => new Set(arr2).has(item));
console.log(result);	//4,5
//3.求arr和arr2的并集
let union = [...newSet([...arr,...arr2])];
console.log(union);
//4.求arr和arr2的差集
let diff = [...new Set(arr)].filter(item => !new Set(arr2).has(item));//差集可以是并集的取反
console.log(diff);

Map

ES6提供了 Map数据结构。它类似于对象,也是键值对的集合。但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。Map也实现了iterator接口,所以可以使用『扩展运算符』和『 for …of…』进行遍历。Map的属性和方法:

  1. size 返回Map的元素个数
    2)set 增加一个新元素,返回当前Map
    3)get 返回键名对象的键值
    4)has 检测Map中是否包含某个元素,返回boolean值
  2. clear清空集合,返回undefined
//声明一个Map
let m = new Map();
//添加元素
m.set('name','xiaoming');
m.set('del','被删除了');
m.set('change',function(){
	console.log("改变了");
});
let key = {
	school:"第一中学"
};
m.set(key,['北京','上海','深圳'])//获取map里元素个数 ---size
console.log(m.size);
//删除元素 --delete
m.delete('del');
//获取元素
console.log(m.get('change'));
//清空
m.clear();
//遍历
for (let v of m){
	console.log(v);
}
console.log(m);

在这里插入图片描述
遍历
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值