Skip to content

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