Set
基本用法
ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
Set
函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化。
集合实现了 iterator 接口,所以可以使用『扩展运算符』和『for…of…』进 行遍历
let arr = [1,2,3,4,5,4,3,2,1];
//1. 数组去重
let result = [...new Set(arr)]; //因为[...], 所以result是数组
console.log(result);
//2. 交集
let arr2 = [4,5,6,5,6];
// let result = [...new Set(arr)].filter(item => { //filter函数只能用在数组array上
// let s2 = new Set(arr2);// 4 5 6 就是先去除重复元素
// if(s2.has(item)){
// return true;
// }else{
// return false;
// }
// });
let result = [...new Set(arr)].filter(item => new Set(arr2).has(item));
console.log(result);
//3. 并集
let union = [...new Set([...arr, ...arr2])];
console.log(union);
//4. 差集
let diff = [...new Set(arr)].filter(item => !(new Set(arr2).has(item)));
console.log(diff);
Set.prototype.size
:返回Set
实例的成员总数。
操作方法
Set.prototype.add(value)
:添加某个值,返回 Set 结构本身。Set.prototype.delete(value)
:删除某个值,返回一个布尔值,表示删除是否成功。Set.prototype.has(value)
:返回一个布尔值,表示该值是否为Set
的成员。Set.prototype.clear()
:清除所有成员,没有返回值。
Map
ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合。但是**“键” 的范围不限于字符串,各种类型的值(包括对象)都可以当作键**。Map 也实现了 iterator 接口,所以可以使用『扩展运算符』和『for…of…』进行遍历。
Map 的属性和方法:
- size 返回Map 的元素个数
- set 增加一个新元素,返回当前Map
- get 返回键名对象的键值
- has 检测Map 中是否包含某个元素,返回 boolean 值 5) clear 清空集合,返回 undefined
//声明 Map
let m = new Map();
//添加元素
m.set('name','尚硅谷');
m.set('change', function(){
console.log("我们可以改变你!!");
});
let key = {
school : 'ATGUIGU'
};
m.set(key, ['北京','上海','深圳']);
//size
// console.log(m.size);
//删除
// m.delete('name');
//获取
// console.log(m.get('change'));
// console.log(m.get(key));
//清空
// m.clear();
//遍历
for(let v of m){
console.log(v);
}