Pad mit Standardwerten
Mir ist aufgefallen, dass ich das padLeft hauptsächlich für die Zeitumrechnung / das Auffüllen von Zahlen benötige
Also habe ich diese Funktion geschrieben
function padL(a,b,c){//string/number,length=2,char=0
return (new Array(b||2).join(c||0)+a).slice(-b)
}
Diese einfache Funktion unterstützt Number oder String als Eingabe
Standard-Pad ist 2 Zeichen
Standardzeichen ist 0
so kann ich einfach schreiben
padL(1);
// 01
wenn ich das zweite Argument hinzufüge (Padbreite)
padL(1,3);
// 001
dritter Parameter (Pad Char)
padL('zzz',10,'x');
// xxxxxxxzzz
EDIT
@BananaAcid Wenn Sie einen undefinierten Wert oder eine Zeichenfolge mit der Länge 0 übergeben, erhalten Sie 0undefined
..so:
wie vorgeschlagen
function padL(a,b,c){//string/number,length=2,char=0
return (new Array((b||1)+1).join(c||0)+(a||'')).slice(-(b||2))
}
Dies kann aber auch kürzer erreicht werden.
function padL(a,b,c){//string/number,length=2,char=0
return (new Array(b||2).join(c||0)+(a||c||0)).slice(-b)
}
funktioniert auch mit:
padL(0)
padL(NaN)
padL('')
padL(undefined)
padL(false)
Und wenn Sie in der Lage sein möchten, auf beide Arten zu polstern:
function pad(a,b,c,d){//string/number,length=2,char=0,0/false=Left-1/true=Right
return a=(a||c||0),c=new Array(b||2).join(c||0),d?(a+c).slice(0,b):(c+a).slice(-b)
}
die kürzer geschrieben werden kann, ohne Slice zu verwenden.
function pad(a,b,c,d){
return a=(a||c||0)+'',b=new Array((++b||3)-a.length).join(c||0),d?a+b:b+a
}
/*
Usage:
pad(
input // (int or string) or undefined,NaN,false,empty string
// default:0 or PadCharacter
// optional
,PadLength // (int) default:2
,PadCharacter // (string or int) default:'0'
,PadDirection // (bolean) default:0 (padLeft) - (true or 1) is padRight
)
*/
Wenn Sie nun versuchen, 'Averylongword' mit 2 zu füllen, ist das nicht mein Problem.
Sagte, dass ich dir einen Tipp gebe.
Wenn Sie auffüllen, tun Sie dies meistens N-mal für denselben Wert.
Die Verwendung einer beliebigen Funktion innerhalb einer Schleife verlangsamt die Schleife !!!
Wenn Sie also nur einige Zahlen in einer langen Liste belassen möchten, verwenden Sie keine Funktionen, um diese einfache Sache zu erledigen.
benutze so etwas:
var arrayOfNumbers=[1,2,3,4,5,6,7],
paddedArray=[],
len=arrayOfNumbers.length;
while(len--){
paddedArray[len]=('0000'+arrayOfNumbers[len]).slice(-4);
}
Wenn Sie nicht wissen, wie die maximale Auffüllgröße auf den Zahlen im Array basiert.
var arrayOfNumbers=[1,2,3,4,5,6,7,49095],
paddedArray=[],
len=arrayOfNumbers.length;
// search the highest number
var arrayMax=Function.prototype.apply.bind(Math.max,null),
// get that string length
padSize=(arrayMax(arrayOfNumbers)+'').length,
// create a Padding string
padStr=new Array(padSize).join(0);
// and after you have all this static values cached start the loop.
while(len--){
paddedArray[len]=(padStr+arrayOfNumbers[len]).slice(-padSize);//substr(-padSize)
}
console.log(paddedArray);
/*
0: "00001"
1: "00002"
2: "00003"
3: "00004"
4: "00005"
5: "00006"
6: "00007"
7: "49095"
*/