案列:需要将给定的数字前面填充0,以达到指定的位数。
如:23,补全到8位,补全符号为0,要求的结果为:00000023



方法一:使用循环

此方法算法:在给定的字符(串)前 通过循环给定的长度减去给定字符(串)长度(len-n.length)次添加填充字符 r ,最后得到结果。

代码:

//len 为总长度,r为补全的符号,n为给定的字符(串)

function buquan(len,r,n){
    var numstr = n.toString();
    var l=numstr.length;
    if (numstr.length>=len) {return numstr;}      
    for(var  i = 0 ;i<len – l;i++){
      numstr = r.toString() + numstr;  
     }
    return numstr; 
   }

方法二 使用数组而不使用循环语句

此方法算法:生成一个长度为给定长度减去给定字符(串)长度  (len-n.length) 的数组,并填充为 r 字符,再将数组进行无符号连接得到前面的补全字符串,补全字符串再和给定的字符字符(串)进行连接即得到结果。

代码:

//len 为总长度,r为补全的符号,n为给定的字符(串)

function buquan(len,r,n){
    if(len<=n.toString().length) return n;
    return (new Array(len-n.toString().length)).fill(r).join(“”)+n.toString();
}

小结:方法一浅显易懂,算法已于移植到任何一种语言。方法二写法充分使用了js自身提供的特性,写法更简洁。