js中位数不足自动补位扩展padLeft、padRight实现代码
方法一、自定义函数实现,不方便自定义调用
functionFillZero(p){ returnnewArray(3-(p+'').length+1).join('0')+p; } FillZero(6);//输出006
方法二、String方法一扩展(C#中PadLeft、PadRight)
String.prototype.PadLeft=function(len,charStr){ vars=this+''; returnnewArray(len-s.length+1).join(charStr||'')+s; } String.prototype.PadRight=function(len,charStr){ vars=this+''; returns+newArray(len-s.length+1).join(charStr||''); } varp=6; p.toString().PadLeft(3,'0');//输出006 p.toString().PadRight(3,'0');//输出600
方法三、原理同方法二
String.prototype.pad=function(pos,len,padStr){ varpadStrs=newArray(len).join(padStr,''); returnpos?(padStrs+this.toString()).substr(0-len):(this.toString()+padStrs).substr(0,len); } String.prototype.lpad=function(len,padStr){ returnthis.pad(1,len,padStr); } String.prototype.rpad=function(len,padStr){ returnthis.pad(0,len,padStr); } String.prototype.padLeft=String.prototype.lpad; String.prototype.padRight=String.prototype.rpad; varstr="6"; console.log(str.lpad(2,"0")); console.log(str.padLeft(2,"0"));
代码四、
String.prototype.padLeft=function(padChar,width){ varret=this; while(ret.length下面是其他网友的补充
javascript-leftpad方法
原由是微博上出的一则leftpad方法被吐槽的事。
原方法是通过循环挨个拼接字符串的方式,所以效率差了点(会产生N多string对象,导致对象回收慢)
类似
for(i=0;i
str=pad+str;
}
改进如下:
//cache varpadding1="00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; varpadding2=""; functionleftpad(str,length,useSpace){ varpadding=padding1; if(useSpace){ padding=padding2; } varcnt=length-str.length; if(cnt<=0)returnstr; if(cnt<=200)returnpadding.substring(0,cnt)+str; str=padding+str; returnleftpad(str,length,ch); }思路:
1.减少string对象的生成,所以尽量减少字符串拼接的次数
2.降低时间复杂度
以上就是js中位数不足自动补位扩展padLeft、padRight实现代码的详细内容,更多关于js自动补位padLeft、padRight的资料请关注毛票票其它相关文章!