구현 1:
/* Bland 방법*/
function pad(num, n) {
var i = (num "").length
while(i < n) num = "0" num
> }
위 코드는 너무 밋밋하고 실제 제 수준을 반영하지 않습니다. 따라서 두 가지 구현이 있습니다.
/* Magical 재귀 방법* /
function pad2(num, n) {
if ((num "").length >= n) return num
return pad2("0" num, n); 🎜>}
매번 감탄과 찬사를 보내게 만드는 마법의 재귀~~
하지만 고수들이 경쟁할 때 중요한 것은 치명적인 한 수. 위의 코드는 실제로 두 줄을 사용하는데 이는 단순히 모욕적입니다. 곰곰히 생각해 보니 한 줄의 마법의 코드가 떠올랐습니다.
/ * 이상한 트릭*/
function pad3(num, n) {
return (Array(n).join(0) num).slice(-n)
}
이번에 ㅋㅋㅋ 감탄하는 표정을 보여주네 히아~~
=== 나는 공간 구분선이 아니고 길고 긴 시간 구분선이다. n년 만에 ===
가을 공기가 선선해진 어느 날, 마음이 여유롭고 행복했습니다. 친구들과 함께 보리수 아래에 앉아 와인을 마시고 체스도 두었습니다.
친구가 말했다: BP, 당신이 떠난 이후로 나에게 너무 많은 고통을 안겨주었습니다. 당신이 남긴 마법의 코드 때문에 내 머리카락이 3년 일찍 빠졌어요.
충격을 받았습니다. 어떻게 이런 말을 할 수 있을까요?
친구는 슬픈 표정으로 뒤를 돌아보며: 그 마법의 패드3 기능을 기억하시나요? 떠난 지 1년 만에 사업이 급증했다. pad3에 버그가 있어 숫자의 첫 번째 숫자가 가로채는 경우가 있습니다. 예를 들어 pad3(123456, 5)는 23456을 반환합니다. 이 버그는 해커에 의해 발견되었으며 이로 인해 여러 대규모 피싱 사고가 발생했고 회사는 수백만 달러의 손실을 입었습니다. 당시 상사는 나에게 하루 안에 버그를 찾으라고 명령했지만, 당신의 매직 코드는 버그를 찾는 데 3일이 걸렸습니다. pad3 외에 마법의 xxoo9 기능도 있는데 그때는...
오래된 친구가 계속 수다를 떨고 있었는데, 첫 문단만 듣고는 정신이 없었습니다. 고개를 숙이고 pad3를 어떻게 쓰는지 고민했습니다. 트레이딩 시스템에 사용되는 버그가 있군요...
오래된 친구와 작별 인사를 하고 기다릴 수가 없었습니다. GoogleFace에 있는 클라우드의 pad3 및 xxoo9 코드를 테스트한 후 충격을 받았습니다.
tricky_code.html
pad3에는 문자 가로채기 버그뿐만 아니라 성능 문제도 있었습니다...
격렬한 이데올로기 고심하다.
어리둥절한 가운데 멀리서 당승이 웃으며 이야기하는 모습이 보였다.
세상 사람들은 내가 말이 많다고 비웃지만, 세상은 내 방식을 이해하지 못한다.
이 혼란을 해결하려면 단순함이 진정한 지혜입니다.
당승이 두루마리를 던지고 웃었다:
/* 간단하고 오래 지속되는 방법*/
function pad(num, n) {
var len = num.toString().length;
while(len < n) {
num = "0" num;
len; 🎜>참고: 저는 항상 이런 글을 쓰고 싶었습니다. 오늘 51js를 돌아다니다가 우연히 글을 봤습니다. 앞에 0을 추가하기에는 숫자가 부족해서 바로 이 글의 아이디어가 떠올랐습니다. 제로 패딩과 관련하여 나의 이상한 반응은 return Array(n - ("" num).length 1).join(0) num; 입니다. 이는 Guoguo와 유사하지만 충격 값을 고려하면(Guoguo The 버그가 더 숨겨져 있음) 마지막으로 Guoguo의 코드를 예로 사용했습니다. 어쨌든, Guoguo에게 감사드립니다.