1.Set 和 WeakSet用法
Set
let set1=new Set()//不会重复
// set 参数是数组,数组的值是基本类型
let set2=new Set([1,2,3,4,5,5,5,5,6,7])
console.log(set2);
// 在set里面添加元素 add
set2.add(44);
// 获取元素数量 size
console.log(set2.size);
// 在set里面删除元素 delete
set2.delete(4)
// 清除所有元素 clear
// set2.clear()
// has 判断里面是否有指定的值,有-true,没有-false
console.log(set2.has(9));
console.log(set2.has(1));
// entries( ) 返回键值对的遍历器
console.log(set2.entries());
for(let [i,v] of set2.entries()){
console.log(i,v);
}
// 属性名和属性值一样
console.log(set2.keys());
console.log(set2.values());
for(let i of set2.keys()){
console.log(i);
}
set2.forEach(function(item){
console.log(item);
})
WeakSet
// WeakSet 弱引用
// 声明
let ws = new WeakSet()
console.log(ws);
// 传值必须是对象类型的值[{}]
let ws1 = new WeakSet([{ name: "张三" }])
console.log(ws1);
// 添加元素 add
let obj = { age: 18 }
ws1.add(obj)
// 删除元素 delete
// ws1.delete(obj)
// 找到指定元素 has
console.log(ws1.has(obj));
// 是弱引用,不能遍历
2.Map和WeakMap用法
Map
// 属性名必须是字符串类型, 传惨数组里面套数组
let map = new Map([
["name", "张三"],
["age", 17]
])
console.log(map);
// 添加元素 set
map.set("height", 180)
// get 获取指定元素,返回值
console.log(map.get("height"));
// 删除指定键值对 delete
map.delete("age")
console.log(map);
// 删除所有 clear
// map.clear()
// console.log(map);
// 查找指定元素
console.log(map.has("height"));
console.log(map.has("heigh"));
// entries( ) 返回键值对的遍历器
console.log(map.entries());
for(let [i,v] of map.entries()){
console.log(i,v);
}
// 属性名和属性值一样
console.log(map.keys());
console.log(map.values());
for(let i of map.keys()){
console.log(i);
}
map.forEach(function(item){
console.log(item);
})
// size 获取数量
console.log(map.size);
// WeakMap 弱引用 不过键名的类型必须要求是引用类型的值
let wp = new WeakMap()
console.log(wp);
// 用set 添加元素
let obj={name:"zs"}
let arr=[1]
wp.set(arr,8)
wp.set(obj,6)
function fn1(){}
wp.set(fn1,2)
// get 获取指定元素,返回值
console.log(wp.get(arr));
// 删除指定键值对 delete
wp.delete(fn1)
console.log(wp);
// 查找指定元素
console.log(wp.has(obj));
console.log(wp.has("heigh"));