1。生成一系列数字在某些情况下,我们会在两个数字之间创建一个数组。假设我们要判断某人的生日是否在某个年份范围内,那么下面是一个非常简单的实现方式:letstart=1900,end=2000;[...newArray(end+1).keys()].slice(start);//[1900,1901,...,2000]//还有这种方式,但是对于非常大的范围不太稳定Array.from({length:end-start+1},(_,i)=>开始+i);2.使用值数组作为函数的参数在某些情况下,我们需要将值收集到一个数组中,然后将其作为参数传递给函数。使用ES6,您可以使用扩展运算符(...)并从[arg1,arg2]>(arg1,arg2)中提取一个数组:constparts={first:[0,2],second:[1,3],}["Hello","World","JS","Tricks"].slice(...parts.second)//["World","JS"]3.使用values作为Math方法的参数,当我们需要使用Math.max或Math.min来求一个数组中的最大值或最小值时,我们可以这样做:constelementsHeight=[...document.body.children].map(el=>el.getBoundingClientRect().y);Math.max(...elementsHeight);//474constnumbers=[100,100,-1000,2000,-3000,40000];Math.min(...numbers);//-30004.Merge/有个好方法将数组中的数组Array展平,称为Array.flat,需要一个depth参数,表示数组嵌套的深度,默认值为1。但是,如果我们不知道深度怎么办,我们需要将其全部展平,只需将Infinity作为参数传递constarrays=[[10],50,[100,[2000,3000,[40000]]]]arrays.flat(Infinity)//[10,50,100,2000,3000,40000]5.防止代码崩溃代码中有不可预知的行为是不好的,但是如果你有这种行为,你需要处理它。比如常见的错误TypeError,如果尝试获取undefined/null等属性,就会报这个错误。constfound=[{name:"Alex"}].find(i=>i.name==='Jim')console.log(found.name)//TypeError:Cannotreadproperty'name'ofundefined我们可以避免像这样:constfound=[{name:"Alex"}].find(i=>i.name==='Jim')||{}console.log(found.name)//undefined6。这种方法传递参数的好方法,一个很好的用例是styled-components,在ES6中,我们可以将模板字符作为函数的参数传递,而无需使用方括号。如果你想格式化/转换文本,这是一个好技巧:constmakeList=(raw)=>raw.join().trim().split("\n").map((s,i)=>`${i+1}.${s}`).join("\n");makeList`Hello,WorldHello,World`;//1.Hello,World//2.World,World7.Swapingvariablesusingdestructuringassignmentsyntax我们可以很方便地使用解构赋值语法交换变量:leta="hello"letb="world"//wrongwaya=bb=a//{a:'world',b:'world'}//正确做法[a,b]=[b,a]//{a:'world',b:'hello'}8.跨国际项目需要按字母排序,对于Dictionary排序,有些特殊语言可能有问题,如下图://错误的做法["a","z","?"].sort((a,b)=>a-b);//['a','z','?']//正确的方式["a","z","?"].sort((a,b)=>a.localeCompare(b));//['a','?','z']localeCompare():以特定于语言环境的顺序比较两个字符串。9.隐藏隐私最后一个技巧是屏蔽字符串。当你需要屏蔽任何变量(不是密码)时,下面的方法可以帮助你快速完成:constpassword="hackme";password.substr(-3).padStart(password.length,"*");//***kme本文转载自微信公众号“大千世界”,可通过以下二维码关注。转载本文请联系大千世界公众号。
