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的资料请关注毛票票其它相关文章!