10.Set和Map数据结构
set数据结构和数组类似,但所有成员的值唯一
let a = new Set();
[1,1,2,3].forEach((x)=>a.add(x));
for(let k of a) {
consolog(k)
}
10.1基础使用(注意每一项为变量而不是对象,对象无法去重)
let a = new Set([1,2,3,4,4])
[...a]
a.size ///4
[...new Set([1,2,3,4,4])]
10.2属性和方法
Set.prototype.constructor 构造函数指向Set本身
Set.prototype.size 返回Set实例的成员总数
add(value) 添加项目
delete(value) 删除项目
has(value) 检测是否存在某项
clear() 清除所有成员,没有返回值
let a = new Set();
a.add(1).add(2)
a.delete(1)
a.clear();
10.2数组去重
//去重的两种方法
[...new Set([1,2,3,3,4])]
Array.from(new Set([1,2,3,4,4]))
//遍历和过滤
let a = new Set([1,2,3,4])
let b = new Set([...a]).map(x=>x*2)
let c = new Set([...a]).filter(x=>(x%2==0))
11Proxy
proxy用于修改某些操作的默认行为,可以理解为拦截外界对莫表对象访问的一种机制,从而对外界的访问经闲过滤和修改,即代理某些操作,也称”代理器“
11.1 基础使用
proxy实例化需要传入两个参数,target参数表示要拦截对象,handler参数是一个对象表示用来定制拦截行为
let p = new Proxy(target,handler);
let a = new Proxy({},{
get: function(target,handler) {
return 'jack'
}
})
a.name //lee
a.age //lee