Web前端工程师要掌握的JavaScript代码片段(一)

如题所述

今天小编要跟大家分享的文章是关于Web前端工程师要掌握的JavaScript代码片段(一)。正在从事web前端工作的小伙伴们来和小编一起看一看吧,希望本篇文章能够对正在从事web前端工作的小伙伴们有所帮助。





1、Anagramsofstring(带有重复项)


使用递归。对于给定字符串中的每个字母,为字母创建字谜。使用map()将字母与每部分字谜组合,然后使用reduce()将所有字谜组合到一个数组中,最基本情况是字符串长度等于2或1。


constanagrams=str=>{


if(str.length<=2)returnstr.length===2?[str,str[1]+str[0]]:
[str];


returnstr.split('').reduce((acc,letter,i)=>


acc.concat(anagrams(str.slice(0,i)+str.slice(i+1)).map(val=>
letter+val)),[]);


};


//anagrams('abc')->['abc','acb','bac','bca','cab','cba']


2、数组平均数


使用reduce()将每个值添加到累加器,初始值为0,总和除以数组长度。


constaverage=arr=>arr.reduce((acc,val)=>acc+val,0)/
arr.length;


//average([1,2,3])->2


3、大写每个单词的首字母


使用replace()匹配每个单词的第一个字符,并使用toUpperCase()来将其大写。


constcapitalizeEveryWord=str=>str.replace(/\b[a-z]/g,char=>
char.toUpperCase());


//capitalizeEveryWord('helloworld!')->'HelloWorld!'


4、首字母大写


使用slice(0,1)和toUpperCase()大写第一个字母,slice(1)获取字符串的其余部分。省略lowerRest参数以保持字符串的其余部分不变,或将其设置为true以转换为小写。(注意:这和上一个示例不是同一件事情)


constcapitalize=(str,lowerRest=false)=>


str.slice(0,1).toUpperCase()+(lowerRest?str.slice(1).toLowerCase():
str.slice(1));


//capitalize('myName',true)->'Myname'


5、检查回文


将字符串转换为toLowerCase(),并使用replace()从中删除非字母的字符。然后,将其转换为tolowerCase(),将('')拆分为单独字符,reverse(),join(''),与原始的非反转字符串进行比较,然后将其转换为tolowerCase()。


constpalindrome=str=>{


consts=str.toLowerCase().replace(/[\W_]/g,'');


returns===s.split('').reverse().join('');


}


//palindrome('tacocat')->true


6、计数数组中值的出现次数


每次遇到数组中的特定值时,使用reduce()来递增计数器。


constcountOccurrences=(arr,value)=>arr.reduce((a,v)=>v===
value?a+1:a+0,0);


//countOccurrences([1,1,2,1,2,3],1)->3


7、当前URL


使用window.location.href来获取当前URL。


constcurrentUrl=_=>window.location.href;


//currentUrl()->'https://google.com'


8、Curry


使用递归。如果提供的参数(args)数量足够,则调用传递函数f,否则返回一个curried函数f。


constcurry=(fn,arity=fn.length,...args)=>


arity<=args.length


?fn(...args)


:curry.bind(null,fn,arity,...args);


//curry(Math.pow)(2)(10)->1024


//curry(Math.min,3)(10)(50)(2)->2


9、Deepflattenarray


使用递归,使用reduce()来获取所有不是数组的元素,flatten每个元素都是数组。


constdeepFlatten=arr=>


arr.reduce((a,v)=>a.concat(Array.isArray(v)?deepFlatten(v):v),
[]);


//deepFlatten([1,[2],[[3],4],5])->[1,2,3,4,5]


10、数组之间的区别


从b创建一个Set,然后在a上使用Array.filter(),只保留b中不包含的值。


constdifference=(a,b)=>{consts=newSet(b);returna.filter(x
=>!s.has(x));};


//difference([1,2,3],[1,2])->[3]


11、两点之间的距离


使用Math.hypot()计算两点之间的欧几里德距离。


constdistance=(x0,y0,x1,y1)=>Math.hypot(x1-x0,y1-y0);


//distance(1,1,2,3)->2.23606797749979


12、可以按数字整除


使用模运算符(%)来检查余数是否等于0。


constisDivisible=(dividend,divisor)=>dividend%divisor===0;


//isDivisible(6,3)->true


13、转义正则表达式


使用replace()来转义特殊字符。


constescapeRegExp=str=>str.replace(/[.*+?^${}()|[\]\\]/g,
'\\$&');


//escapeRegExp('(test)')->\\(test\\)


14、偶数或奇数


使用Math.abs()将逻辑扩展为负数,使用模(%)运算符进行检查。如果数字是偶数,则返回true;如果数字是奇数,则返回false。


constisEven=num=>num%2===0;


//isEven(3)->false


15、阶乘


使用递归。如果n小于或等于1,则返回1。否则返回n和n-1的阶乘的乘积。


constfactorial=n=>n<=1?1:n*factorial(n-1);


//factorial(6)->720


16、斐波那契数组生成器


创建一个特定长度的空数组,初始化前两个值(0和1)。使用Array.reduce()向数组中添加值,后面的一个数等于前面两个数相加之和(前两个除外)。


constfibonacci=n=>


Array(n).fill(0).reduce((acc,val,i)=>acc.concat(i>1?acc[i-
1]+acc[i-2]:i),[]);


//fibonacci(5)->[0,1,1,2,3]


17、过滤数组中的非唯一值


将Array.filter()用于仅包含唯一值的数组。


constfilterNonUnique=arr=>arr.filter(i=>arr.indexOf(i)===
arr.lastIndexOf(i));


//filterNonUnique([1,2,2,3,4,4,5])->[1,3,5]


18、Flatten数组


使用reduce()来获取数组中的所有元素,并使用concat()来使它们flatten。


constflatten=arr=>arr.reduce((a,v)=>a.concat(v),[]);


//flatten([1,[2],3,4])->[1,2,3,4]


19、从数组中获取最大值


使用Math.max()与spread运算符(...)结合得到数组中的最大值。


constarrayMax=arr=>Math.max(...arr);


//arrayMax([10,1,5])->10


20、从数组中获取最小值


使用Math.min()与spread运算符(...)结合得到数组中的最小值。


constarrayMin=arr=>Math.min(...arr);


//arrayMin([10,1,5])->1


21、获取滚动位置


如果已定义,请使用pageXOffset和pageYOffset,否则使用scrollLeft和scrollTop,可以省略el来使用window的默认值。


constgetScrollPos=(el=window)=>


({x:(el.pageXOffset!==undefined)?el.pageXOffset:el.scrollLeft,


y:(el.pageYOffset!==undefined)?el.pageYOffset:el.scrollTop});


//getScrollPos()->{x:0,y:200}


22、最大公约数(GCD)


使用递归。基本情况是当y等于0时。在这种情况下,返回x。否则,返回y的GCD和x/y的其余部分。


constgcd=(x,y)=>!y?x:gcd(y,x%y);


//gcd(8,36)->4


23、Headoflist


返回ARR[0]


consthead=arr=>arr[0];


//head([1,2,3])->1


24、list初始化


返回arr.slice(0,-1)


constinitial=arr=>arr.slice(0,-1);


//initial([1,2,3])->[1,2]


以上就是小编今天为大家分享的关于Web前端工程师要掌握的JavaScript代码片段(一)的文章,希望本篇文章能够对正在从事web前端工作的小伙伴们有所帮助。想要了解更多web前端相关知识和想要了解后面的代码片段的小伙伴,记得关注北大青鸟web培训官网。


温馨提示:答案为网友推荐,仅供参考