Set和Map数据结构
一、Set
ES6提供了新的数据结构——Set,它类似于数组,但是成员的值都是唯一的,没有重复的值。Set本身是一个构造函数,用来生成Set数据结构。
1.Set利用add()添加成员
{
let list= new Set();
list.add(1);
list.add(2);
}
2.利用size显示长度
{
let list= new Set();
list.add(1);
list.add(2);
console.log(list.size); //2
}
3.设置默认值
{
let arr = [1,2,3,4,5]
let list = new Set(arr);
console.log(list.size); //5
}
4.不会有重复的值
{
let list = new Set;
list.add(1);
list.add(2);
list.add(1);
console.log(list); //只有1,2
}
作用:去重,但是转换过程中不会做类型转换。
{
let arr = [1,2,3,1,2]
let list = new Set(arr);
console.log(list); //1,2,3
}
{
let arr = [1,2,3,1,"2"]
let list = new Set(arr);
console.log(list); //1,2,3,"2"
}
5.利用has检查是否有某个成员,delete删除成员,clear清空所有成员
{
let arr = [1,2,3,4,5]
let list = new Set(arr);
console.log(list.has(2)); //true
list.delete(2)
console.log(list); //1,3,4,5
list.clear();
console.log(list); //空
}
6.Set的key和value值是相同的,所以不用entries也可以遍历。
{
let arr = [1,2,3,4,5]
let list = new Set(arr);
for(let value of list){ //list后面可加 .entries ,value替换成[key,value]
console.log(value); //1,2,3,4,5
}
}
二、WeakSet
WeakSet元素只能是对象,并且是弱引用(地址的引用)。没有clear方法、没有size属性、不能遍历。其他方式相同。
{
let weakList = new WeakSet;
weakList.add({a:"aa"});
console.log(weakList); //成功
}
{
let weakList = new WeakSet;
weakList.add(3);
console.log(weakList); //出错
}
三、Map
类似于对象,也是键值对的集合,但是key不限于字符串,各种类型的值都可以作为key。
1.利用set设置,get读取
{
let maplist = new Map;
let arr = ["abc"];
maplist.set(arr,123);
console.log(maplist); //打印maplist对象
console.log(maplist.get(arr)); //123
}
2.传入数组
{
let arr=[["a",123],["b",234]];
let mapEx = new Map(arr);
console.log(mapEx);
}
3.获取长度 size
{
let arr = [["a",123],["b",234]];
let mapEx = new Map(arr);
console.log(mapEx.size); //2
}
4.删除 delete
{
let arr = [["a",123],["b",234]];
let mapEx = new Map(arr);
mapEx.delete("b");
console.log(mapEx); //只剩下a
}
5. 清空 clear
{
let arr = [["a",123],["b",234]];
let mapEx = new Map(arr);
mapEx.clear();
console.log(mapEx); //空
}
四、WeakMap
key值只能是对象。
没有clear方法、没有size属性、不能遍历。