1、手写数组去重,多种方法使用ES6的Set去重(Set是ES6新增的数据类型,Set的成员具有唯一性)functiondistinct(arr){returnArray.from(newSet(arr));}使用ES6的Set去重(超级简化版)[...newSet(arr)]//[...newSet(需要去重的数组)]使用splice配合两重for循环去重functiondistinct(arr){for(leti=0;iarr.length;i++){for(letj=i+1;jarr.length;j++){if(arr===arr[j]){arr.splice(j,1);j--;}}}returnarr;}使用for循环配合indexOf去重functiondistinct(arr){letnewArr=[];for(leti=0;iarr.length;i++){if(newArr.indexOf(arr)===-1){newArr.push(arr);}}returnnewArr;}使用for循环配合sort排序去重functiondistinct(arr){arr=arr.sort();letnewArr=[];for(leti=0;iarr.length;i++){if(arr!==arr[i-1]){newArr.push(arr);}}returnnewArr;}使用for循环配合includes去重functiondistinct(arr){letnewArr=[];for(leti=0;iarr.length;i++){if(!newArr.includes(arr)){newArr.push(arr);}}returnnewArr;}使用filter配合indexOf去重functiondistinct(arr){returnarr.filter((item,index,arr)=arr.indexOf(item)===index);}2、浏览器是如何渲染页面的根据html文件构建DOM树和CSSOM树。构建DOM树期间,如果遇到JS,阻塞DOM树及CSSOM树的构建,优先加载JS文件,加载完毕,再继续构建DOM树及CSSOM树构建渲染树(RenderTree)构建渲染树,根据渲染树计算每个可见元素的布局,并输出到绘制流程,将像素渲染到屏幕上(渲染树(RenderTree)由DOM树、CSSOM树合并而成,但并不是必须等DOM树及CSSOM树加载完成后才开始合并构建渲染树。三者的构建并无先后条件,亦非完全独立,而是会有交叉,并行构建。因此会形成一边加载,一边解析,一边渲染的工作现象)页面的重绘(repaint)与重排(reflow,也有称回流)页面渲染完成后,若JS操作了DOM节点,根据JS对DOM操作动作的大小,浏览器对页面进行重绘或是重排。基本原理:浏览器内核拿到内容后,渲染步骤大致可以分为以下几步解析HTML,构建DOM树解析CSS,生成CSS规则树合并DOM树和CSS规则,生成render树(DOM树和CSSOM树连接在一起形成rendertree.‘渲染数’)布局render树(Layout/reflow),负责各元素尺寸、位置的计算绘制render树(paint),绘制页面像素信息浏览器会将各层的信息发送给GPU,GPU会将各层合成(
转载请注明:http://www.aierlanlan.com/grrz/7555.html