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

127个常用JS代码片段,每段代码30秒看懂(上)

时间:2023-04-01 11:19:22 vue.js

JavaScript是最流行的编程语言之一,就像大多数人说的:“如果你想学一门编程语言,就学JavaScript”FreeCodeCamp创始人QuincyLarson在最近的一次采访中被问及开发人员应该首先学习哪种语言。“JavaScript,”他回答说。“软件正在吞噬世界,而JavaScript正在吞噬软件。”JavaScript每年都变得越来越占主导地位,没有人知道什么最终会取代它。”如果你没有充分的理由学习一门新语言(比如你的工作需要你维护一个非JavaScript代码库),那么我的建议是专注于提高你的JavaScript技能。“听我说这么多,你是不是很兴奋?这里有127个常用的JS代码片段供你学习和使用。1.如果数组的所有元素都满足函数条件,则all返回true。调用时,如果省略第二个参数,则默认传递一个布尔值。constall=(arr,fn=Boolean)=>arr.every(fn);全部([4,2,3],x=>x>1);//真全部([1,2,3]);//true2,allEqual判断数组中的元素是否相等constallEqual=arr=>arr.every(val=>val===arr[0]);allEqual([1,2,3,4,5,6]);//falseallEqual([1,1,1,1]);//true3,approximatelyEqual此代码示例检查两个数是否近似相等,差值可以通过传递参数来设置constapproximatelyEqual=(v1,v2,epsilon=0.001)=>Math.abs(v1-v2)arr.map(v=>v.map(x=>`"${x}"`).join(delimiter)).join('\n');arrayToCSV([['a','b'],['c','d']]);//'"a","b"\n"c","d"'arrayToCSV([['a','b'],['c','d']],';');//'"a";"b"\n"c";"d"'5,arrayToHtmlListthis此代码段将数组元素转换为

  • 标记,并将此元素添加到给定的ID元素标记内。constarrayToHtmlList=(arr,listID)=>(el=>((el\=document.querySelector('#'+listID)),(el.innerHTML+=arr.map(item\=>\`
  • ${item}
  • \`).join(''))))();arrayToHtmlList(['item1','item2'],'myListID');6、尝试这段代码执行一个Function,将剩余的参数作为参数传回给函数,返回相应的结果,并且可以捕获异常。constattempt=(fn,...args)=>{try{returnfn(...args);}catch(e){返回einstanceof错误?e:新错误(e);}};varelements=attempt(function(selector){returndocument.querySelectorAll(selector);},'>_>');if(elementsinstanceofError)元素=[];//elements=[]7,average此代码返回两个或几个数字的平均值。constaverage=(...nums)=>nums.reduce((acc,val)=>acc+val,0)/nums.length;平均值(...[1,2,3]);//2平均值(1,2,3);//28.averageBy是map()函数和reduce()函数结合的例子。该函数首先通过map()函数将对象转化为数组,然后调用reduce()函数Accumulates,然后根据数组的长度返回平均值。constaverageBy=(arr,fn)=>arr.map(typeoffn==='function'?fn:val=>val[fn]).reduce((acc,val)=>acc+val,0)/arr.length;averageBy([{n:4},{n:2},{n:8},{n:6}],o=>o.n);//5averageBy([{n:4},{n:2},{n:8},{n:6}],'n');//59、bifurcate这个函数包含两个参数,类型是数组,根据第二个参数的真假条件,对一个参数数组进行分组,条件为真放入第一个数组,其他放入第二个数组。这里使用了Array.prototype.reduce()和Array.prototype.push()的组合。constbifurcate=(arr,filter)=>arr。reduce((acc,val,i)=>(acc[filter[i]?0:1].push(val),acc),[[],[]]);bifurcate(['beep','boop','foo','bar'],[true,true,false,true]);//[['beep','boop','bar'],['foo']]10.bifurcateBy这段代码按照指定的函数逻辑对数组进行分组。如果函数条件逻辑为真,则放入第一个数组,其他不满足的放入第二个数组。这里结合使用了Array.prototype.reduce()和Array.prototype.push(),基于函数过滤逻辑,通过Array.prototype.push()函数添加到数组中。constbifurcateBy=(arr,fn)=>arr。减少((acc,val,i)=>(acc[fn(val,i)?0:1]。推(val),acc),[[],[]]);bifurcateBy(['beep','boop','foo','bar'],x=>x[0]==='b');//[['beep','boop','bar'],['foo']]11.bottomVisible用于检测页面是否滚动到页面底部。constbottomVisible=()=>document.documentElement.clientHeight+window.scrollY>=(document.documentElement.scrollHeight||document.documentElement.clientHeight);底部可见();//true12,byteSize此代码返回字符串长度的字节数。这里使用了Blob对象,Blob(BinaryLargeObject)对象代表了一段二进制数据,提供了一系列的操作接口。其他用于操作二进制数据的API(如File对象)都是基于Blob对象并继承其属性和方法。Blob对象的生成有两种方式:一种是使用Blob构造函数,另一种是使用slice方法从已有的Blob对象中切出一部分。constbyteSize=str=>newBlob([str]).size;字节大小('?');//4byteSize('HelloWorld');//1113.capitalize将字符串的首字母转为大写,这里主要使用数组中ES6的扩展语法。constcapitalize=([first,...rest])=>first.toUpperCase()+rest.join('');capitalize('fooBar');//'FooBar'大写('fooBar',true);//'FooBar'14,capitalizeEveryWord将句子中每个单词的首字母转为大写,这里用正则表达式代替。constcapitalizeEveryWord=str=>str.replace(/\b[a-z]/g,char=>char.toUpperCase());capitalizeEveryWord('你好世界!');//'HelloWorld!'15、castArray这段代码将非数值转换为数组对象。constcastArray=val=>(Array.isArray(val)?val:[val]);castArray('foo');//['foo']castArray([1]);//[1]16、compact从数组中移除false的内容。constcompact=arr=>arr。过滤器(布尔值);compact([0,1,false,2,'',3,'a','e'*23,NaN,'s',34]);//[1,2,3,'a','s',34]17.countOccurrences统计数组中某个值出现的次数constcountOccurrences=(arr,val)=>arr.reduce((a,v)=>(v===val?a+1:a),0);countOccurrences([1,1,2,1,2,3],1);//318,创建目录此代码段使用existSync()检查目录是否存在,如果不存在则使用mkdirSync()创建目录。constfs=require('fs');constcreateDirIfNotExists=dir=>(!fs.existsSync(dir)?fs.mkdirSync(dir):undefined);createDirIfNotExists('测试');//创建目录'test',如果不存在19,currentURL返回当前访问的URL地址。constcurrentURL=()=>window.location.href;当前网址();//'https://medium.com/@fatosmorina'20,dayOfYear返回当年的当前日期constdayOfYear=date=>Math.floor((date-newDate(date.getFullYear(),0,0))/1000/60/60/24);dayOfYear(新日期());//27221,decapitalize将字符串首字母转为小写字母constdecapitalize=([first,...rest])=>first.toLowerCase()+rest.join('')decapitalize('FooBar');//今天'fooBar'版块的内容就和大家分享到这里,感谢大家的阅读。如果你喜欢我的分享,请给我一个关注,点赞和转发。您的支持是我分享的动力。以后我会继续分享剩下的代码片段。欢迎继续关注。本文原作者:FatosMorina来源网站:medium注:非直译以往阿里、腾讯、今日头条、美团等多家公司再次延长工作时间得心应手的Vue高级技能

    猜你喜欢