varsayılan değerlere sahip ped
Çoğunlukla zaman dönüşümü / sayı dolgusu için padLeft'e ihtiyacım olduğunu fark ettim
bu yüzden bu işlevi yazdım
function padL(a,b,c){//string/number,length=2,char=0
return (new Array(b||2).join(c||0)+a).slice(-b)
}
Bu basit işlev Sayı veya Dize'yi destekler giriş olarak
varsayılan ped 2 karakterdir
varsayılan karakter 0
bu yüzden yazabilirim
padL(1);
// 01
ikinci argümanı eklersem (ped genişliği)
padL(1,3);
// 001
üçüncü parametre (pad char)
padL('zzz',10,'x');
// xxxxxxxzzz
Tanımsız bir değer veya 0 uzunluklu bir dize iletirseniz @BananaAcid DÜZENLE ..so 0undefined
:
önerildiği gibi
function padL(a,b,c){//string/number,length=2,char=0
return (new Array((b||1)+1).join(c||0)+(a||'')).slice(-(b||2))
}
ancak bu daha kısa bir yolla da gerçekleştirilebilir.
function padL(a,b,c){//string/number,length=2,char=0
return (new Array(b||2).join(c||0)+(a||c||0)).slice(-b)
}
şunlarla da çalışır:
padL(0)
padL(NaN)
padL('')
padL(undefined)
padL(false)
Ve her iki şekilde de ped yapabilmek istiyorsanız:
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)
}
dilimi kullanmadan daha kısa bir şekilde yazılabilir.
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
)
*/
şimdi eğer 'averylongword' 2 ile pad denerseniz ... bu benim sorunum değil.
Sana bir ipucu verdiğimi söyledi.
Çoğu zaman ped yaparsanız aynı değeri N kez yaparsınız.
Bir döngü içinde herhangi bir fonksiyonun kullanılması döngüyü yavaşlatır !!!
Yani sadece uzun bir liste içinde bazı sayılar bırakmak istiyorsanız bu basit şeyi yapmak için fonksiyonları kullanmayın.
böyle bir şey kullan:
var arrayOfNumbers=[1,2,3,4,5,6,7],
paddedArray=[],
len=arrayOfNumbers.length;
while(len--){
paddedArray[len]=('0000'+arrayOfNumbers[len]).slice(-4);
}
dizinin içindeki sayılara göre maksimum dolgu boyutunun nasıl olduğunu bilmiyorsanız.
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"
*/