es6-set-map数据结构
Set的用法
set的key一定是字符串
{
let list=new Set(); list.add(5);//向set中增加值要用add() list.add(6); console.log('size',list.size);//set的长度要用size
}
结果为size 2
还有一种声明方法,在set初始化时就定义值
{ let arr=[1,2,3,4,5];
let list=new Set(arr);
console.log('size',list.size); }
结果为size 5
size中的数据是唯一的,如果添加进去重复的数据,不会报错,但是只会显示一个,这种特性可以用来去重
{ let list=new Set();
list.add(1);
list.add(2);
list.add(1);
console.log('list',list);
}
上面的代码中多添加了一个1,但是只会显示一个1
let arr=[1,2,3,1,2];
let list2=new Set(arr);
console.log('list2',list2);
set不会转换数据类型
let arr=[1,2,3,1,'2'];//前面的2是数值,后面的2是字符
let list2=new Set(arr);
console.log('list2',list2);
set方法
添加:add
删除:delete
清空:clear
查看是否有某元素:has
遍历
{
let arr=[1,2];
let list=new Set(arr);
//遍历
for(let key of list.keys())
{ console.log('key ',key); }
for(let value of list.values())
{ console.log('value ',value); }
//如果不加方法,默认的会是value值
for(let value of list)
{ console.log('value/ ',value); }
for(let [key,value] of list.entries())
{ console.log('key,value ',key,value); }
}
遍历还可以使用forEach
list.forEach(function(item)
{ console.log('item',item); })
WeakSet的用法
WeakSet和Set支持的数据不一样吗,weakset的元素只能时候对象
weakset是一个弱引用,不会去检测是否与垃圾回收机制挂钩上
{
{ let weaklist=new WeakSet();
let arg={};//这个是一个对象
weaklist.add(arg);
console.log('weaklist',weaklist);
}
如果是weaklist.add(2);这样会报错
weakset没有clear方法
weakset没有set属性
weakset不能遍历
其他和set一样
Map的用法
map的key可以是多种类型
{ //声明
let map=new Map();
let ar=['123']; map.set(ar,456);//添加元素
console.log('map',map,map.get(ar));
}
还有初始化时赋值
{ let map=new Map([['a',123],['b',456 ]]);
console.log('map args',map); }
map的方法
求大小:size
获取值:get
添加值:set
删除:delete
清空:clear
遍历
和set一模一样
WeakMap的用法
weakmap与map的区别可以对比weakset与set的区别来验证