当前位置: 首页 > Web前端 > vue.js

127个常用的JS代码片段,每段代码花30秒就能看懂(中)

时间:2023-04-01 00:55:10 vue.js

127个常用的JS代码片段,每段代码需要30秒看懂在(上)中,我分享了前21段代码,今天继续分享21段代码,希望对大家的日常工作有所帮助.22.deepFlatten通过递归将多维数组扁平化为一维数组。constdeepFlatten=arr=>[].concat(...arr.map(v=>(Array.isArray(v)?deepFlatten(v):v)));deepFlatten([1,[2],[[3],4],5]);//[1,2,3,4,5]23.默认删除对象的属性。如果对象包含重复的属性,则以前的属性为准。constdefaults=(obj,...defs)=>Object.assign({},obj,...defs.reverse(),obj);默认值({a:1},{b:2},{b:6},{a:3});//{a:1,b:2}24.defer延迟函数的调用,即异步调用函数。constdefer=(fn,...args)=>setTimeout(fn,1,...args);推迟(console.log,'a'),console.log('b');//logs'b'then'a'25.degreesToRads此代码将标准度数转换为弧度。constdegreesToRads=deg=>(deg*Math.PI)/180.0;degreesToRads(90.0);//~1.570826,difference这段代码找出两个给定数组的不同点,发现前一个数组不存在于后一个数组元素中。constdifference=(a,b)=>{consts=newSet(b);返回a.filter(x=>!s.has(x));};差异([1、2、3]、[1、2、4]);//[3]27.differenceBy使用给定的函数对需要比较的数组进行处理,找出前一个数组没有后一个数组中的元素。constdifferenceBy=(a,b,fn)=>{consts=newSet(b.map(fn));返回一个。过滤器(x=>!s.有(fn(x)));};differenceBy([2.1,1.2],[2.3,3.4],Math.floor);//[1.2]differenceBy([{x:2},{x:1}],[{x:1}],v=>v.x);//[{x:2}]28.differenceWith这段代码根据给定的函数逻辑过滤需要比较的数组,发现前一个数组没有后一个数组的元素。constdifferenceWith=(arr,val,comp)=>arr。filter(a=>val.findIndex(b=>comp(a,b))===-1);differenceWith([1,1.2,1.5,3,0],[1.9,3,0],(a,b)=>Math.round(a)===Math.round(b));//[1,1.2]29,digitize将输入的数字拆分成单个数字的数组。constdigitize=n=>[...`${n}`].map(i=>parseInt(i));数字化(431);//[4,3,1]30,distance计算两点之间的距离Thedistancebetweenpointsconstdistance=(x0,y0,x1,y1)=>Math.hypot(x1-x0,y1-y0);距离(1、1、2、3);//2.2360679774997931、drop这段代码从给定数组的左边删除n个元素constdrop=(arr,n=1)=>arr.slice(n);下降([1、2、3]);//[2,3]下降([1,2,3],2);//[3]掉落([1,2,3],42);//[]32,dropRight这段代码将给定的数组从右边开始删除n个元素constdropRight=(arr,n=1)=>arr.slice(0,-n);dropRight([1,2,3]);//[1,2]dropRight([1,2,3],2);//[1]dropRight([1,2,3],42);//[]33、dropRightWhile这段代码根据给定的函数条件从给定的数组右边开始删除,直到当前元素满足函数条件为True,停止删除并返回数组的剩余元素。constdropRightWhile=(arr,func)=>{while(arr.length>0&&!func(arr[arr.length-1]))arr=arr.切片(0,-1);返回arr;};dropRightWhile([1,2,3,4],n=>n<3);//[1,2]34.dropWhile根据给定的函数条件过滤数组,不满足函数条件的会从数组中移除。constdropWhile=(arr,func)=>{while(arr.length>0&&!func(arr[0]))arr=arr.slice(1);返回arr;};dropWhile([1,2,3,4],n=>n>=3);//[3,4]35.elementContains接收两个DOM元素对象参数,判断后者是否是前者的子元素。constelementContains=(parent,child)=>parent!==child&&parent.contains(child);elementContains(document.querySelector('head'),document.querySelector('title'));//trueelementContains(document.querySelector('body'),document.querySelector('body'));//false36??,filterNonUnique去除数组中的重复元素constfilterNonUnique=arr=>[...newSet(arr)];filterNonUnique([1,2,2,3,4,4,5]);//[1,2,3,4,5]37.findKey根据给定的函数条件,找到第一个满足条件的对象的键值。constfindKey=(obj,fn)=>Object.keys(obj).find(key=>fn(obj[key],key,obj));findKey({barney:{age:36,active:true},fred:{age:40,active:false},pebbles:{age:1,active:true}},o=>o['active']);//'barney'38,findLast根据给定的函数条件过滤数组,删除最后一个满足条件的元素。constfindLast=(arr,fn)=>arr。过滤器(fn)。流行音乐();findLast([1,2,3,4],n=>n%2===1);//339、flatten根据指定数组的深度将嵌套数组展平。constflatten=(arr,depth=1)=>arr.reduce((a,v)=>a.concat(depth>1&&Array.isArray(v)?flatten(v,depth-1):v),[]);展平([1,[2],3,4]);//[1,2,3,4]展平([1,[2,[3,[4,5],6],7],8],2);//[1,2,3,[4,5],6,7,8]40.forEachRight根据给定的函数条件,从数组的右到左依次执行。constforEachRight=(arr,callback)=>arr。slice(0).reverse().forEach(回调);forEachRight([1,2,3,4],val=>console.log(val));//'4','3','2','1'41、forOwn这段代码根据给定的函数条件迭代对象。constforOwn=(obj,fn)=>Object.keys(obj).forEach(key=>fn(obj[key],key,obj));forOwn({foo:'bar',a:1},v=>console.log(v));//'bar',142,functionName此代码输出函数的名称。constfunctionName=fn=>(console.debug(fn.name),fn);函数名(Math.max);//max(登录控制台debug通道)今天小节的内容就在这里分享给大家,谢谢喜欢我的分享,请给我一个关注,点赞转发。您的支持是我分享的动力。以后我会继续分享剩下的代码片段。欢迎继续关注。本文原作者:FatosMorina来源网站:medium注:并非直译过去常用的127个JS代码片段,每段代码30秒看懂(下)HandyVue进阶技巧