이 질문에서 찾은 15 가지 기능 / 방법을 오랫동안 테스트 한 결과, 이제 가장 적합한 (가장 다재다능하고 빠른) 것을 알고 있습니다.
이 질문에 대한 답변에서 15 가지 기능 / 방법을 사용하여 100 개의 패드를 실행하는 데 걸리는 시간을 측정하는 스크립트를 만들었습니다. 각 패드는 숫자 9
로2000
0 웁니다. 이것은 과도하게 보일 수 있지만 기능의 스케일링에 대한 좋은 아이디어를 제공합니다.
내가 사용한 코드는 여기에서 찾을 수 있습니다 :
https://gist.github.com/NextToNothing/6325915
코드를 직접 수정하고 테스트하십시오.
가장 다양한 방법을 사용하려면 루프를 사용해야합니다. 다른 많은 사람들이 실패 할 가능성이 높지만 성공할 수 있기 때문입니다.
어떤 루프를 사용해야합니까? 글쎄, 그것은 while
루프 일 것입니다. for
루프는 빠른 아직이지만,while
루프는 약간 빨리 (석사의 커플) - 그리고 청소기.
에 의한 것과 같은 답변 Wilco
, Aleksandar Toplek
또는Vitim.us
완벽하게 일을 할 것입니다.
개인적으로 다른 접근법을 시도했습니다. 재귀 함수를 사용하여 문자열 / 숫자를 채우려 고했습니다. 배열을 조인하는 메소드보다 잘 작동했지만 여전히 for 루프만큼 빨리 작동하지 않았습니다.
내 기능은 다음과 같습니다
function pad(str, max, padder) {
padder = typeof padder === "undefined" ? "0" : padder;
return str.toString().length < max ? pad(padder.toString() + str, max, padder) : str;
}
패딩 변수를 설정하거나 설정하지 않고 내 기능을 사용할 수 있습니다. 이렇게 이렇게 :
pad(1, 3); // Returns '001'
// - Or -
pad(1, 3, "x"); // Returns 'xx1'
개인적으로, 내 테스트 후, 내가 좋아하는, while 루프와 방법을 사용 Aleksandar Toplek
하거나 Vitim.us
. 그러나 패딩 문자열을 설정할 수 있도록 약간 수정합니다.
따라서이 코드를 사용합니다.
function padLeft(str, len, pad) {
pad = typeof pad === "undefined" ? "0" : pad + "";
str = str + "";
while(str.length < len) {
str = pad + str;
}
return str;
}
// Usage
padLeft(1, 3); // Returns '001'
// - Or -
padLeft(1, 3, "x"); // Returns 'xx1'
이 코드를 사용하여 프로토 타입 함수로 사용할 수도 있습니다.
Number.prototype.padLeft = function(len, pad) {
pad = typeof pad === "undefined" ? "0" : pad + "";
var str = this + "";
while(str.length < len) {
str = pad + str;
}
return str;
}
// Usage
var num = 1;
num.padLeft(3); // Returns '001'
// - Or -
num.padLeft(3, "x"); // Returns 'xx1'