题目: 找出被修改过的数字

出题人:阿里巴巴新零售技术质量部

参考答案

emmm假设背景是寻找数组中被修改的数字或者元素,我使用代理的方式来监听数组中元素的变化,并将变化的最后数值和次数储存在额外空间中

参考代码

const arr =[1,2,3,4,5,6,7,8,89,9,9,9,9,99];

const saveModifyNum={

}
const watchNumChangeProxy=new Proxy(arr,{
    set:function(target,key,value){
        let {count} = Reflect.get(saveModifyNum,target[key])||{count:0,value};
        ++count;
        return Reflect.set(saveModifyNum,target[key],{
            count,
            value
        });    
    }
})
watchNumChangeProxy[0]=2;
watchNumChangeProxy[0]=3;
watchNumChangeProxy[0]=4;
//{ '1': { count: 3, value: 4 } }