集合
set
1.set常用的方法
Set.prototype.Constructor():
构造函数,就是Set()
Set.prototype.size():返回Set实例成员总;
add(value):添加值,返回Set本身
delete(value):删除值,返回一个布尔值,判断删除是否成功
has(value):返回布尔值,表参数是否为Set成员
clear():清除所有成员,无返回值
let s=new Set();
let s2=new Set(["zyj","wmx","cxb","zxd","dxc"]);
//元素个数
console.log(s2.size);//5
//添加元素
s2.add("zyc");
//删除元素
s2.delete("cxb");
//判断是否含有
s2.has("zyj);//true
2.遍历
- keys():返回键名的遍历器
- values():返回键值的遍历器
- entries():返回键值对的遍历器
- forEach(function(){}):使用回调函数遍历每个成员,无返回值
3.weakSet
与Set的区别
最主要的区别是weakSet的成员只是对象,不能是其他值
weakSet的方法
- WeakSet.prototype.add(value ):添加新成员
- WeakSet.prototype.delete(value):删除指定成员
- WeakSet.prototype.has(value):返回布尔值,表指定值是否在WeakSet实例中
他的方法与set很想但是添加一个prototype,并且没有返回长度的方法
且不能遍历成员
二、Map
和set不同的是他哥维纳风格类似于对象,用键值对的方式但是他保存的是地址值,可以是各中类型的数据
1.属性方法
size() 返回Map结构的成员总数
set(key,value) 设置key值所对应的键,然后返回
若key已经有值,则赋值更新,否则新生成该键值
get(key)
获取key对应的值,若找不到key则返回undefined
has(key)
返回一个布尔值,表示ley是否在Map结构中
delete(key)
删除某个键,删除成功则返回true,反之返回false
clear()
2、遍历
方法与set方法校相通
3、数据类型转化
与对象
//map转对对象
function mapToObj(m){
let obj=Object.create(null);
//用增强for循环遍历到对象里卖弄
for(let [k,v] of m){
obj[k]=v;
}
return obj
}
//对象转map
function objToMap(obj){
let M=new Map();
for(let k of Object.keys(obj)){
M.set(k.obj[k]);
}
return strMap;
}
与json
map转json
如果Map键名都是字符串,可以转为对象JSON
function StrMapToJson(StrMap){
reutrn JSON.stringify(strMapToObj(strMap));
}
如果Map键名中含有非字符串,转为数组JSON
function mapToArrayJson(map){
return JSON.stringify(...map);
}
json转map
正常情况所有键名都是字符串
function jsonToStrMap(jsonStr){
return objToStrMap(JSON.parse(jsonStr));
}
4.weakMap
masp与weakmap
WeakMap只接受对象作为名字(null除外),不接受其他类型的值作为键名(即数组和Symbol值作为WeakMap的键名时会报错)
WeakMap的键名所指向的对象不计入垃圾回收机制(会自动被移除,有助于防止内存泄漏)
WeakMap没有遍历操作,也,没有size(),没有clear()