기본값이있는 패드
나는 시간 변환 / 숫자 패딩을 위해 대부분 padLeft가 필요하다는 것을 알았습니다.
그래서 나는이 기능을 썼다.
function padL(a,b,c){//string/number,length=2,char=0
return (new Array(b||2).join(c||0)+a).slice(-b)
}
이 간단한 함수는 숫자 또는 문자열을 지원합니다 을 입력으로
기본 패드는 2 자입니다.
기본 문자는 0입니다
그래서 간단히 쓸 수 있습니다
padL(1);
// 01
두 번째 인수를 추가하면 (패드 너비)
padL(1,3);
// 001
세 번째 매개 변수 (패드 문자)
padL('zzz',10,'x');
// xxxxxxxzzz
정의되지 않은 값이나 길이가 0 인 문자열을 전달하면 @BananaAcid를 편집 하십시오 0undefined
.
제안한대로
function padL(a,b,c){//string/number,length=2,char=0
return (new Array((b||1)+1).join(c||0)+(a||'')).slice(-(b||2))
}
그러나 이것은 더 짧은 방법으로도 달성 될 수 있습니다.
function padL(a,b,c){//string/number,length=2,char=0
return (new Array(b||2).join(c||0)+(a||c||0)).slice(-b)
}
함께 작동합니다 :
padL(0)
padL(NaN)
padL('')
padL(undefined)
padL(false)
그리고 두 가지 방법으로 패딩 할 수 있기를 원한다면 :
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)
}
슬라이스를 사용하지 않고 더 짧은 방법으로 쓸 수 있습니다.
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
)
*/
이제 2로 'verylongword'를 채우려 고하면 내 문제가 아닙니다.
내가 당신에게 팁을 주었다고 말했다.
대부분의 경우 패드를 사용하면 동일한 값을 N 번 수행합니다.
루프 내에서 모든 유형의 함수를 사용하면 루프 속도가 느려집니다 !!!
따라서 긴 목록 안에 일부 숫자를 남겨두고 싶다면이 간단한 작업을 수행하는 함수를 사용하지 마십시오.
이 같은 것을 사용하십시오 :
var arrayOfNumbers=[1,2,3,4,5,6,7],
paddedArray=[],
len=arrayOfNumbers.length;
while(len--){
paddedArray[len]=('0000'+arrayOfNumbers[len]).slice(-4);
}
배열 내부의 숫자를 기반으로 최대 패딩 크기를 모르는 경우.
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"
*/